Комментарии 25
egrep?
pcre!
pcre!
Я не уловил суть комментария. Что имелось ввиду?
То, что PCRE как средство работы с регэкспами мощнее чем egrep.
наверное, что вы ламер
В регулярных выражениях — я ламер. Но я не боюсь учиться.
Оскорбление тоже не признак ума.
Мне всегда казалось, что это очень сложная штука и никак не доходили руки, но после Фридла, понял что этим обязательно пользоваться.
Ну это же азы. Это всё должно быть в голове. Если нет — гоу читать хотя бы страниц 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'. Проверьте, а потом отпишите результат. Если вам лень, отвечу сам — нет, не найдет. Хотя если верить тому, что написано в топике — найдет еще как.
Не поймите меня неверно, я лично против вас ничего не имею, но я считаю, что топики должны писать люди хотя бы «хорошо» разбирающиеся в предмете, а не по принципу «увидел табличку, понравилось, решил поделиться».
В руби (у вас в профиле он стоит в качестве интересов), кстати, тоже pcre, что говорит мне о том, что вы и сами то не очень разбираетесь в разновидностях регулярок и запостили сюда табличку «1.3 Сводка метасимволов egrep» не очень понимая ее смысла (ведь в руби \< это тоже не граница слова). Не верите?
Давайте посмотрим найдет ли регулярка \<cat\> в руби (или яваскрипте — неважно) слово cat в строке 'I like cat, eeee'. Проверьте, а потом отпишите результат. Если вам лень, отвечу сам — нет, не найдет. Хотя если верить тому, что написано в топике — найдет еще как.
Не поймите меня неверно, я лично против вас ничего не имею, но я считаю, что топики должны писать люди хотя бы «хорошо» разбирающиеся в предмете, а не по принципу «увидел табличку, понравилось, решил поделиться».
В первых семи строках словосочетание «регулярные выражения» встречается шесть раз.
Причём дважды — в заголовке. А в тексте — ещё и выделены зачем-то.
Вы для людей пишете или для поисковиков? Потому как человеку это читать дико неудобно.
Причём дважды — в заголовке. А в тексте — ещё и выделены зачем-то.
Вы для людей пишете или для поисковиков? Потому как человеку это читать дико неудобно.
Самая большая проблема регвыров — это экранирование символов. Особенно достает то, что в разных средах надо по-разному экранировать, и поэтому регвыры из одной среды просто так в другой среде не заработают.
Я постоянно путаюсь, где надо или где ненадо экранировать, особенно в консоли Linux.
— То, что в двойных кавычках — вроде как ненадо.
— То что без кавычек — вроде как надо, чтоб шелл сам не разгребал строку по уравлящим символам.
— При поиске в MidnightCommander — надо двойное экранирование
— В коде PHP уже не помню, но вроде как нужно одинарное экранирование. Причем ereg глючно само по себе, об этом надо просто знать и пользоваться pgrep_ функциями.
Учитывая сложность самих регвыров, использовать их из-за такого зоопарка весьма затруднительно.
Я постоянно путаюсь, где надо или где ненадо экранировать, особенно в консоли Linux.
— То, что в двойных кавычках — вроде как ненадо.
— То что без кавычек — вроде как надо, чтоб шелл сам не разгребал строку по уравлящим символам.
— При поиске в MidnightCommander — надо двойное экранирование
— В коде PHP уже не помню, но вроде как нужно одинарное экранирование. Причем ereg глючно само по себе, об этом надо просто знать и пользоваться pgrep_ функциями.
Учитывая сложность самих регвыров, использовать их из-за такого зоопарка весьма затруднительно.
pcre к тому же гораздо быстрее, а ereg вроде даже не входит в будущий php6.
зато в php6 должны включить какой-то новый regexp-движок (ICU).
forum.vingrad.ru/forum/topic-130262.html
зато в php6 должны включить какой-то новый regexp-движок (ICU).
forum.vingrad.ru/forum/topic-130262.html
Про не самый популярный синтаксис уже сказали. всё-таки я сперва удивился про границу слова, помня про \b
Кстати, в Postgres и некоторых других СУБД тоже можно регулярить, но синтаксис немного зубодробительный ))) двойное экранирование )
Кстати, в Postgres и некоторых других СУБД тоже можно регулярить, но синтаксис немного зубодробительный ))) двойное экранирование )
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Регулярные выражения — символьные классы, конструкция выбора, метапоследовательности