Sabemos que expressões regulares (ER) são implementadas com autômatos finitos (FA). Em alguma linguagem (como JavaScript) no RE, existem recursos como 'capturando parênteses' com 'referências anteriores':
(x) Corresponde a 'x' e se lembra da correspondência, como mostra o exemplo a seguir. Os parênteses são chamados de captura de parênteses. Os '(foo)' e '(bar)' no padrão / (foo) (bar) \ 1 \ 2 / correspondem e lembre-se das duas primeiras palavras da string "foo bar foo bar". O \ 1 e \ 2 no padrão correspondem às duas últimas palavras da sequência.
Quero saber se esse padrão /(foo) (bar) \1 \2/
é de fato um ER de acordo com a definição de ER que temos na linguagem formal teórica ou se é algo mais poderoso. E se é assim, eu gostaria de saber se esse tipo de recurso é implementado também com a FA ou de outra maneira (em particular como é implementado).