В regexp никаких тебе «(?R)», нет once-only subpatterns, нет юникодных диапазонов, нет «\G». Сижу, как дурак, клепаю конечные автоматы. Сделать рекурсию в регулярках с одними группами, но без «once-only subpatterns» я ниасилил, а без «\G» автоматы плохо стыкуются с регулярками. Не могли PCRE что ли взять? Зачем одноколёсный велосипед было писать?
Пятиминутка адского гнева. Нет, я не хочу поговорить об этом. Но если где-то есть пайтонячья рекурсия в регулярке, покажите рабочий пример, хоть погляжу как это делается.
Вдох-выход.
Комментарии 16
Бытует мнение, что регулярки выолняются медленнее, чем рукопашный анализ. Не всегда.
Я придерживаюсь мнения, что иногда совершенно все равно какова скорость. В данном случае это как раз тот случай.
Комментарий для almalinka.blogspot.com:
Мне казалось, что распространено другое мнение —что-то, встроенное в язык, выполняется обычно быстрее, чем реализованное на нём же.
Ага. Не все читали Фридла, поэтому большинство не умеет писать эффективные регулярные выражения.что-то поняли (я себя пока к полностью понявшим не отношу ^_^).
А некоторые читали и даже
http://www.lua.org/manual/5.1/manual.html#5.4.1
Мало того, что они обратный слеш заменили на процент. Так у них ещё и дефис волшебный символ и нет пайпа для альтернативных шаблонов.
Я, например, до сих пор не знаю как написать на нём обычный «^(foo|bar)$»
По мне так очень бедный и неудобный синтаксис.
Я пишу о том, что в Python
По мне тоже, но lua встроен в lighttpd и xscript, так что приходиться есть кактус…
Там не такой здоровый проект, чтобы позволить ему ещё и Perl внутри иметь. А модуля PCRE под Python я
Если «лайти» ещё можно заменить, что xscript… увы :)