Регулярные выражения — ликбез по регэкспам

Здесь обсуждаются темы, косвенно связанные с Far.
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Регулярные выражения — ликбез по регэкспам

Post by Raistlin »

Latest post of the previous page:

HaRT, any_string - произвольная последовательность символов. Соответственно, во втором примере она может быть другой.
Magically yours
Raistlin
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Регулярные выражения — ликбез по регэкспам

Post by HaRT »

Raistlin wrote: во втором примере она может быть другой
Во втором примере их две.
Так вот они равны друг другу или на самом деле это any_string1 и any_string2?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Регулярные выражения — ликбез по регэкспам

Post by Raistlin »

Нет, не равны друг другу.
Magically yours
Raistlin
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Регулярные выражения — ликбез по регэкспам

Post by HaRT »

Raistlin, итого, вам требуется найти “foo чтоУгодно bar”, но чтобы в этом “чтоУгодно” не содержалось “foo”? Я правильно понял?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Регулярные выражения — ликбез по регэкспам

Post by Raistlin »

Да.
Magically yours
Raistlin
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Регулярные выражения — ликбез по регэкспам

Post by HaRT »

HaRT wrote: требуется найти “foo чтоУгодно bar”, но чтобы в этом “чтоУгодно” не содержалось “foo”
foo((?!foo).)*?bar (захват нежадный; если убрать ‘?’ после ‘*’, то будет жадный).
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Исправлена краевая ошибка
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Регулярные выражения — ликбез по регэкспам

Post by Raistlin »

HaRT, спасибо, в принципе работает, но в моем конкретном приложении (WebSite-Watcher), к сожалению, сносит крышу парсеру.
Magically yours
Raistlin
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Регулярные выражения — ликбез по регэкспам

Post by HaRT »

Raistlin wrote: в моем конкретном приложении (WebSite-Watcher), к сожалению, сносит крышу парсеру
А какой там движок регэкспов? И в чём выражается это „сносит крышу“?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Регулярные выражения — ликбез по регэкспам

Post by Raistlin »

А кто его знает, какой движок. Я однажды писал автору, что вот такой-то регэксп не детектит того, что должен, - получил в ответ что-то вроде: "Не делайте так".
Image
Magically yours
Raistlin
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Регулярные выражения — ликбез по регэкспам

Post by HaRT »

Raistlin wrote: сносит крышу парсеру
Попробуйте улучшенный (укороченный) вариант: (foo)((?!\1).)*?bar — вдруг прокатит…
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Исправлена краевая ошибка
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Регулярные выражения — ликбез по регэкспам

Post by Raistlin »

Пробовал...
Magically yours
Raistlin
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Регулярные выражения — ликбез по регэкспам

Post by HaRT »

Raistlin wrote: в принципе работает
Обращаю внимание, я исправил в регэкспах ошибку в случае, если чтоУгодно начиналось с foo. Кроме того, по некотором размышлении обнаружилось ограничение: если конец foo (один или более символов) совпадает с началом bar, то некоторые подходящие строки не будут найдены, например: foo=“do”, bar=“od”, чтоУгодно=“do321dod”.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Регулярные выражения — ликбез по регэкспам

Post by Raistlin »

А мне вот интересно. Надо найти строку: начинается с foo1, затем - произвольная последовательность символов, которая не содержит foo1 (ППС), затем - foo2, затем - снова ППС, и заканчивается все bar. Вот работает (в RESearch), а - нет ().
Magically yours
Raistlin
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Регулярные выражения — ликбез по регэкспам

Post by Wave »

Из разного, если вдруг кому. Лучший ликбез по регуляркам, что я встречал — из видеокурса по JS: вот, 28-й урок. Уже сколько с ними знаком, а и то этот ликбез кое-какие моменты для меня прояснил.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Регулярные выражения — ликбез по регэкспам

Post by Smitis »

Интересно, зачем это видеокурсом делать? Чтобы попивая пивко смотреть с восхищением на большом экране, как чувак ловко мышкой тыкает? :D
Разум когда-нибудь победит.
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Регулярные выражения — ликбез по регэкспам

Post by Wave »

Интересно, зачем в школах и институтах лекции? Можно ж учебники читать, а лучше справочники.
Принцип свободный: не нравится — не ешь!

P.s. На видеокурс автор затратил гораздо меньше времени и усилий, чем если бы делал это в виде книги. И поскольку он бесплатно результат своего труда выложил, претензий к нему быть не может.
Пользуюсь ФАРом больше 20 лет © собирательный.
Post Reply

Return to “Операционные системы, командные оболочки и прочее”