Как механизм регулярных выражений анализирует регулярное выражение с рекурсивными подшаблонами?

Это регулярное выражение соответствует палиндромам: ^((.)(?1)\2|.?)$

Не могу уложить в голове, как это работает. Когда заканчивается рекурсия и когда регулярное выражение выходит из рекурсивного подшаблона и переходит к части "|.?"?

Спасибо.

изменить :извините, я не объяснил \2и(?1)

(?1)-относится к первому подшаблону (к самому себе)

\2-back -ссылка на совпадение второго подшаблона, то есть(.)

Пример выше написан на PHP. Соответствует как "abba" (без символа палиндрома в середине ), так и "abcba" -имеет средний, не -отраженный символ

5
задан alexy2k 26 July 2012 в 15:57
поделиться