RegEx BackReference para combinar valores diferentes

Eu tenho uma regex que eu uso para corresponder à expressão do formulário(val1 operator val2)

Essa regex se parece com:

(\(\s*([a-zA-Z]+[0-9]*|[0-9]+|\'.*\'|\[.*\])\s*(ni|in|\*|\/|\+|\-|==|!=|>|>=|<|<=)\s*([a-zA-Z]+[0-9]*|[0-9]+|\'.*\'|\[.*\])\s*\))

O que é realmente bom e corresponde ao que eu quero, como você pode veraqui nesta demo

MAS: D (aqui vem a manteiga)

Quero otimizar o próprio regex, tornando-o mais legível e "compacto". Eu pesquisei como fazer isso e encontrei algo chamado referência remota, no qual você pode nomear seus grupos de captura e depois referenciá-los mais tarde como tal:

(\(\s*(?P<Val>[a-zA-Z]+[0-9]*|[0-9]+|\'.*\'|\[.*\])\s*(ni|in|\*|\/|\+|\-|==|!=|>|>=|<|<=)\s*(\g{Val})\s*\))

onde nomeei o grupo que captura o lado esquerdo da expressãoVal e depois eu referenciei isso como(\g{Val}), agora oproblema é que essa expressão como você pode veraqui único caso em que o lado esquerdo da expressão é exatamente o mesmo que o lado direito! por exemplo.(a==a) ou(1==1) e não corresponde a expressões como(a==b)!

Agora a pergunta é: existe uma maneira de referenciar o padrão em vez do valor correspondente ?!

questionAnswers(2)

yourAnswerToTheQuestion