Тишинуша Гамимеря (spamsink) wrote,
Тишинуша Гамимеря
spamsink

Category:

Программистский вопрос; возможно, тупой

Вопрос про регулярные выражения.
Приглашаются также продвинутые пользователи текстовых редакторов, ворд-процессоров и т. п., знающие магический смысл сочетания .* в строке поиска по тексту.



Легко написать регулярное выражение, которое находит строки, содержащие "foo" слева от "bar", и чтобы "qux" было между ними: foo.*qux.*bar (не будем сейчас вдаваться в подробности, как именно распределятся символы строки по этим ".*", если вхождений "foo", "bar" или "qux" в строке несколько).

Вопрос вот в чём: есть ли где-нибудь такое расширение языка регулярных выражений, которое позволило бы компактно записать условие найти строки, содержащие "foo" слева от "bar", и чтобы между ними не было "qux"?

UPD: На самом деле здесь две задачи. Первая: паттерну должны удовлетворять строки /foo(.*)bar/ (т.е. .* захватывает всё между первым вхождением foo и последним вхождением bar в строке), такие, что в захваченной строке не содержится qux; вторая: паттерну должны удовлетворять строки, в которых найдутся такие вхождения foo и bar, между которыми нет qux.

Строка "foo qux foo xxx bar qux bar" не удовлетворяет первому паттерну, но удовлетворяет второму.


Похоже, negative lookahead assertions решают одну из двух задач

This entry was originally posted at https://spamsink.dreamwidth.org/1215605.html. Please comment there using OpenID.
Tags: work
Subscribe

  • Экспидия такая экспидия...

    Захотелось мне на празднички кое-куда слетать вдвоём в другое полушарие. Смотрю на Экспидии цены вокруг желаемых дат, выбираю локальный минимум…

  • Что бывало

    Из-за проклятого ковида я нюх потерял: летя на Мальту, при пересадке в Амстердаме я прошел границу Шенгена или раньше времени, или не там, где надо,…

  • Не пугайте /котов/ TSA огурцами!

    Оказывается, если в ручной клади лежит эдакий толстенький огурец, на аэропортовском рентгене он похож на бутылку с водой (чем, в сущности, и…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 23 comments

  • Экспидия такая экспидия...

    Захотелось мне на празднички кое-куда слетать вдвоём в другое полушарие. Смотрю на Экспидии цены вокруг желаемых дат, выбираю локальный минимум…

  • Что бывало

    Из-за проклятого ковида я нюх потерял: летя на Мальту, при пересадке в Амстердаме я прошел границу Шенгена или раньше времени, или не там, где надо,…

  • Не пугайте /котов/ TSA огурцами!

    Оказывается, если в ручной клади лежит эдакий толстенький огурец, на аэропортовском рентгене он похож на бутылку с водой (чем, в сущности, и…