Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
"(a+)b+\1"perl -Mre=debug -e'"aabbaa"=~/(a+)b+\1/' Однако в Perl действительно есть расширение, не совместимое с конечными автоматами — это рекурсивные регулярные выражения типа$regex = qr/0(??{$regex})?1/; Для них действительно не хватит конечного числа состояний, и, следовательно, они могут зацикливаться и завешивать выполнение. Поэтому это расширение не поддерживается ничем, кроме перла. Никому ведь не хочется, чтобы, скажем, web-сервер зависал от неудачного сочетания регекспа в конфиге и урла, набранного пользователем.(a|aa)*b и обратные ссылки тут не причём. А бектрекинг существует во всех порядочных NFA.Ну без бектрекинга нельзя сделать даже (a|aa)*b и обратные ссылки тут не причём. А бектрекинг существует во всех порядочных NFA.
Но вы, я надеюсь, понимаете, что НКА не рассматривает сразу все альтернативы?
perl -Mre=debug -e'"aaaaaa"=~/(a+)\1/'
perl -Mre=debug -e'"aabbaa"=~/(a+)b+\1/'
RE2 supports submatch extraction, but not backreferences.А вот сослаться на подвыражение в RE2 дальше в выражении уже нельзя.
ramntry@ramntry-R418:~/studies/experiments/pcre/test_speed$ time ./pcre_test_speed
ok
real 0m0.004s
user 0m0.000s
sys 0m0.000s
ramntry@ramntry-R418:~/studies/experiments/pcre/test_speed$ time ./pcre_test_speed.pl
ok
real 1m34.656s
user 1m34.562s
sys 0m0.008s
Гитлер выиграл 2-ю Мир. войнуОй, а давайте имя «Вторая мировая война» писать полностью?
не будем приводить правила преобразования РВ в КА, так как они довольно очевидные
Ну здрасьте. Вообще-то именно в этом и должна была быть заявленная цель статьи. Человек, который только что познакомился с конечными автоматами, хочет знать, как они применяются, и начинать надо с примеров вида ab.*cd - без этого дальнейшие показанные графы просто темный лес. Тем более, что рисовать на ребре не один символ, а сразу целое выражение - тоже нифига не очевидно для того, кто регэкспы уже видел, а конечные автоматы еще нет. Ну про эпсилон уже сказали.
Регулярные выражения изнутри