Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

Regexp соответствующий любому набору символов до первого вхождения подстроки

#регулярные_выражения


Например: строка - "все вот это досюда, а дальше там еще много всего досюда". Подстрока,
до которой надо вывести все - "досюда", получить надо "все вот это ".
    


Ответы

Ответ 1



Задача решается при помощи следующего регулярного выражения (PCRE): (.*?)досюда В первом совпадении (Match 1) будет искомая подстрока. Следует обратить внимание на "ленивый" квантификатор (.*?). Если бы он был обычным, т.е. "жадным" (.*), то результат немного отличался бы от ожидаемого. "Жадный" квантификатор для строки "все вот это досюда, а дальше там еще много всего досюда" выдаст совпадение "все вот это досюда, а дальше там еще много всего " в то время как "ленивый" даст вполне ожидаемый результат: "все вот это "

Ответ 2



наиболее логичное решение — удаление искомого слова и всех символов после него: s/досюда.*// в строке останется только то, что требуется.

Ответ 3



"any text any text any textother text other text ...".match(/[\s\S]*?(?=)/)

Комментариев нет:

Отправить комментарий