Некоторые движки регулярных выражений поддерживают это, некоторые нет. Этот сайт говорит, что Perl, Python, PCRE (и, следовательно, PHP) и .NET поддерживают его, все с немного другим синтаксисом:
+--------+----------------------------+----------------------+------------------+
| Engine | Syntax | Backreference | Variable |
+--------+----------------------------+----------------------+------------------+
| Perl | (?<name>...), (?'name'...) | \k<name>, \k'name' | %+{name} |
| | (?P<name>...) | \g{name}, (?&name)* | |
| | | (?P>name)* | |
+--------+----------------------------+----------------------+------------------+
| Python | (?P<name>...) | (?P=name), \g<name> | m.group('name') |
+--------+----------------------------+----------------------+------------------+
| .NET | (?<name>...), (?'name'...) | \k<name>, \k'name' | m.Groups['name'] |
+--------+----------------------------+----------------------+------------------+
| PCRE | (?<name>...), (?'name'...) | \k<name>, \k'name' | Depends on host |
| | (?P<name>...) | \g{name}, \g<name>* | language. |
| | | \g'name'*, (?&name)* | |
| | | (?P>name)* | |
+--------+----------------------------+----------------------+------------------+
Это не полный список, но это то, что я мог найти.Если вы знаете больше ароматов, добавьте их!Формы обратной ссылки с *
- это формы, которые являются "рекурсивными", а не просто обратной ссылкой;Я считаю, что это означает, что они снова соответствуют шаблону , а не тому, что соответствует шаблону .Кроме того, я пришел к этому, прочитав документы, но вполне могут быть ошибки - это включает в себя некоторые языки, которые я никогда не использовал, и некоторые функции, которые я никогда не использовал.Дайте мне знать, если что-то не так.