Comments 6
Следует заметить, что статья 2007-го года, и с тех пор что-то могло поменяться... но не поменялось для конкретно этого синтетического регулярного выражения.
Код на PHP 8.1.9 работает быстро, но для n > 18 не находит матч. Код на Python 3.10 всё так же тормозит.
Из того, что было проверить под рукой, только крейт regex в Rust показал себя отлично, что, в общем неудивительно, учитывая, что под капотом в этом крейте есть несколько разных движков, включая и NFA Томпсона: про это недавно был отличный перевод. Впрочем, это неудивительно: эта серия статей и библиотека RE2 и вдохновили автора на написание этого крейта.
Ааааа! С 2007го года конечно и надо было начинать перевод, а то читая абсолютно не мог понять почему нигде не упомянут RE2 :). А оказывается автор был одним из авторов RE2 и этот движок по сути и описывает.
Интересно, в Java прямо написано "The Pattern engine performs traditional NFA-based matching with ordered alternation as occurs in Perl 5."
И о каком произвольном коде во время поиска идёт речь?
Поиск по регулярным выражениям может быть простым и быстрым