Детали реализации регулярного выражения

A вопрос, на который я ответил меня удивило

Как регулярные выражения реализованы в Python? Какие есть гарантии эффективности? Является ли реализация "стандартной", или она может быть изменена?

Я думал, что регулярные выражения будут реализованы как DFA, и, следовательно, будут очень эффективными (требуя не более одного сканирования входной строки).Лоуренс Гонсалвес поднял интересный момент, что не все регулярные выражения Python являются регулярными. (Его пример - r "(a +) b \ 1", который соответствует некоторому числу a, a b, а затем тому же числу a, что и раньше). Это явно не может быть реализовано с DFA.

Итак, еще раз: каковы детали реализации и гарантии регулярных выражений Python?

Было бы также хорошо, если бы кто-то мог дать какое-то объяснение (в свете реализации), почему регулярные выражения «cat | catdog» и «catdog | cat» приводят к различным результатам поиска в строке «catdog», так как упоминается ввопрос, на который я ссылался раньше.

Ответы на вопрос(3)

Ваш ответ на вопрос