Евгений Степанищев

Я — эксперт в области разработки веб-приложений и безопасности в интернете. Каждый месяц мой блог посещают около 90 тысяч человек. Работаю техническим директором в «Системах документооборота», занимаюсь электронным правительством.

Пайтон такой Пайтон

В regexp никаких тебе «(?R)», нет once-only subpatterns, нет юникодных диапазонов, нет «\G». Сижу, как дурак, клепаю конечные автоматы. Сделать рекурсию в регулярках с одними группами, но без «once-only subpatterns» я ниасилил, а без «\G» автоматы плохо стыкуются с регулярками. Не могли PCRE что ли взять? Зачем одноколёсный велосипед было писать?

Пятиминутка адского гнева. Нет, я не хочу поговорить об этом. Но если где-то есть пайтонячья рекурсия в регулярке, покажите рабочий пример, хоть погляжу как это делается.

Вдох-выход.
8 сентября 2009 19:54

alexeyten (alexeyten.ya.ru)
8 сентября 2009, 22:50

А ты уже видел регулярные выражения в lua?

bolk (bolknote.ru)
9 сентября 2009, 00:45, ответ предназначен alexeyten (alexeyten.ya.ru):

Нет :) Я одно время сильно заинтересовался этим языком, немного поизучал, но до regexp не дошёл, а что там?

almalinka.blogspot.com (almalinka.blogspot.com)
9 сентября 2009, 10:38

М, а без регулярных выражений не обойтись?

bolk (bolknote.ru)
9 сентября 2009, 12:07, ответ предназначен almalinka.blogspot.com:

Обойтись. В тексте не зря упомянуты конечные автоматы. Без многого можно обойтись. Но на регулярках это одна строчка, а тут уже 40 и это ещё не конец.

almalinka.blogspot.com (almalinka.blogspot.com)
9 сентября 2009, 14:46, ответ предназначен bolk (bolknote.ru):

Бытует мнение, что регулярки выолняются медленнее, чем рукопашный анализ. Не всегда.

bolk (bolknote.ru)
9 сентября 2009, 14:57, ответ предназначен almalinka.blogspot.com:

Я придерживаюсь мнения, что иногда совершенно все равно какова скорость. В данном случае это как раз тот случай.

baka.name (baka.name)
9 сентября 2009, 16:15, ответ предназначен almalinka.blogspot.com:

Бытует мнение, что регулярки выолняются медленнее, чем рукопашный анализ.
Мне казалось, что распространено другое мнение - что-то, *встроенное* в язык, выполняется обычно быстрее, чем *реализованное* на нём же.

Не всегда
Ага. Не все читали Фридла, поэтому большинство не умеет писать *эффективные* регулярные выражения.
А некоторые читали и даже что-то поняли (я себя пока к полностью понявшим не отношу ^_^).

alexeyten (alexeyten.ya.ru)
10 сентября 2009, 17:44, ответ предназначен bolk (bolknote.ru):

http://www.lua.org/manual/5.1/manual.html#5.4.1

Мало того, что они обратный слеш заменили на процент. Так у них ещё и дефис волшебный символ и нет пайпа для альтернативных шаблонов.

Я, например, до сих пор не знаю как написать на нём обычный "^(foo|bar)$"

bolk (bolknote.ru)
10 сентября 2009, 22:59, ответ предназначен alexeyten (alexeyten.ya.ru):

По мне так очень бедный и неудобный синтаксис.

jankkhvej.blogspot.com (jankkhvej.blogspot.com)
11 сентября 2009, 09:46

Ещё ДеМарко писал о том, что нет зависимости от языка программирования и качества конечного продукта. Поэтому почему собственно питон? Встройте перл?

bolk (bolknote.ru)
11 сентября 2009, 15:23, ответ предназначен jankkhvej.blogspot.com:

Встроить Перл куда? Я не понял замечания.

Я пишу о том, что в Python зачем-то написали свои регулярки, вместо того, чтобы подключить libpcre.

jankkhvej.blogspot.com (jankkhvej.blogspot.com)
11 сентября 2009, 18:57

Встроить (to embed) перл в ваше проект на питоне. Например http://search.cpan.org/~gaas/pyperl-1.0/ . Или подключите PCRE в питон, зачем изобретать велосипед?

alexeyten (alexeyten.ya.ru)
12 сентября 2009, 00:40, ответ предназначен bolk (bolknote.ru):

По мне тоже, но lua встроен в lighttpd и xscript, так что приходиться есть кактус...

bolk (bolknote.ru)
12 сентября 2009, 16:41, ответ предназначен jankkhvej.blogspot.com:

Там не такой здоровый проект, чтобы позволить ему ещё и Perl внутри иметь. А модуля PCRE под Python я что-то не нагуглил. Он есть вообще? Биндинг писать в рамках этого проекта слишком затратно.

bolk (bolknote.ru)
12 сентября 2009, 16:42, ответ предназначен alexeyten (alexeyten.ya.ru):

Если «лайти» ещё можно заменить, что xscript… увы :)

jankkhvej.blogspot.com (jankkhvej.blogspot.com)
14 сентября 2009, 10:43

Ну я на питоне ничего не пишу, и никогда не интересовался, так что наверное меня слушать не надо :)

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)

Подсказка по написанию комментария

В комментариях можно применять следующую специальную разметку:

  • слово, обрамлённое в «звёздочки» выделяется *жирным*
  • ссылка становится ссылкой: http://bolknote.ru
  • ссылка в скобках также становится ссылкой, закрывающая скобка не захватывается: (http://bolknote.ru)
  • каждую строку цитаты следует начинать со знака «больше»:
    > это цитата
    > из двух строк
  • можно вставить картинку, залитую на один из сервисов: «Яндекс.Фотки», «Фликр» или «Пикплз». Для этого нужно вставить на страницу полный адрес вашей картинки на сервисе, он превратится в картинку:

    http://fotki.yandex.ru/users/bolknote/view/274311?page=3