Как стать автором
Обновить

Комментарии 25

Я не уловил суть комментария. Что имелось ввиду?
То, что PCRE как средство работы с регэкспами мощнее чем egrep.
Спасибо
Синтакс PCRE намного популярней всех остальных.
Его поддерживают/используют Java, Javascript, Python, Ruby, PHP, Apache и др.
наверное, что вы ламер
В регулярных выражениях — я ламер. Но я не боюсь учиться.
Оскорбление тоже не признак ума.
Мне всегда казалось, что это очень сложная штука и никак не доходили руки, но после Фридла, понял что этим обязательно пользоваться.
Да, после этой книги именно такое чувство, но обязательно пользоваться не обязательно. :)
Ну это же азы. Это всё должно быть в голове. Если нет — гоу читать хотя бы страниц 50 Фридла.
Помимо этого всего я ежедневно помню что:

(?: — не захватывает подстроку
(?= — создаёт положительное утверждение
(?! — создаёт отрицательное утверждение
(?()) — условная подмаска

А ещё есть рекурсивные шаблоны, которые я до сих пор не понимаю.

Да, ещё нужно не забытьб сказать про жадность квантификатора *, которая инвертируется, если после него идёт вопросительный знак: *?..
Я думаю для блога все еще впереди.
Про жадность хорошо сказали здесь
А никто и не говорил что это сакральные знания.
Есть еще ретроспективная проверка: (?<=...) и (?<!...)
Хорошо если кто-то в статье упомянет про опережающие/ретроспективные проверки, а то давно заметил, что кто Фридла не читал, про них обычно не знает. В результате чтоб вставить подстроку внутрь строки пишут нечто ужасное.
плейсхолдер (?R) просто в это место вставляет весь шаблон регулярного выражения. причём он всегда вставляется условно с квантификатором количества {,1}.
Если кто-то считает, что копипаст кусочков из книги Фридла (прекрасной книги, я считаю) — это достойный материал для статьи — то он глубоко ошибается, имхо. Если уж приводите такие кусочки — потрудитесь, хоть что-нибудь добавить от себя, объяснить или привести примеры. Книжка большая, если так дальше пойдет, то мы получим просто ее электронную версию в данном блоге в виде нескольких сотен топиков, что никому в общем то не пригодится. В частности данный топик, я считаю, мало полезен хотя бы потому, что он касается только egrep, хотя pcre — существенно более распространен (javascript,python, php ...).

Читал, понравилось, решил поделиться
Да, это здорово, конечно, но тот кусочек, который вы запостили — введет многих в заблуждение. Особенно новичков. То, что это не про pcre можно только догадаться по последнему предложению, где в виде ссылки упоминается, что кое-что тут не поддерживается в некоторых версиях egrep. Но новичек (а профи тут и читать нечего) вообще понятия не имеет ни про диалекты ни про НКА vs ДКА — зато он увидит, что \< — это граница слова и будет пытаться это применить — в чем? Конечно в php, python, javascript. А там это вообще не соответствует действительности, ибо граница слова \b. Ну и что даст такая «табличка» новичку?

В руби (у вас в профиле он стоит в качестве интересов), кстати, тоже pcre, что говорит мне о том, что вы и сами то не очень разбираетесь в разновидностях регулярок и запостили сюда табличку «1.3 Сводка метасимволов egrep» не очень понимая ее смысла (ведь в руби \< это тоже не граница слова). Не верите?

Давайте посмотрим найдет ли регулярка \<cat\> в руби (или яваскрипте — неважно) слово cat в строке 'I like cat, eeee'. Проверьте, а потом отпишите результат. Если вам лень, отвечу сам — нет, не найдет. Хотя если верить тому, что написано в топике — найдет еще как.

Не поймите меня неверно, я лично против вас ничего не имею, но я считаю, что топики должны писать люди хотя бы «хорошо» разбирающиеся в предмете, а не по принципу «увидел табличку, понравилось, решил поделиться».

В первых семи строках словосочетание «регулярные выражения» встречается шесть раз.
Причём дважды — в заголовке. А в тексте — ещё и выделены зачем-то.

Вы для людей пишете или для поисковиков? Потому как человеку это читать дико неудобно.
Угу, тоже напомнило горе-SEO-шника.
Самая большая проблема регвыров — это экранирование символов. Особенно достает то, что в разных средах надо по-разному экранировать, и поэтому регвыры из одной среды просто так в другой среде не заработают.

Я постоянно путаюсь, где надо или где ненадо экранировать, особенно в консоли Linux.

— То, что в двойных кавычках — вроде как ненадо.
— То что без кавычек — вроде как надо, чтоб шелл сам не разгребал строку по уравлящим символам.
— При поиске в MidnightCommander — надо двойное экранирование
— В коде PHP уже не помню, но вроде как нужно одинарное экранирование. Причем ereg глючно само по себе, об этом надо просто знать и пользоваться pgrep_ функциями.

Учитывая сложность самих регвыров, использовать их из-за такого зоопарка весьма затруднительно.
pcre к тому же гораздо быстрее, а ereg вроде даже не входит в будущий php6.

зато в php6 должны включить какой-то новый regexp-движок (ICU).

forum.vingrad.ru/forum/topic-130262.html
Про не самый популярный синтаксис уже сказали. всё-таки я сперва удивился про границу слова, помня про \b

Кстати, в Postgres и некоторых других СУБД тоже можно регулярить, но синтаксис немного зубодробительный ))) двойное экранирование )
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории