MyTetra Share
Делитесь знаниями!
Утверждения в регулярных выражениях. То, что пишется как a(?!pple)
Время создания: 04.07.2023 14:26
Текстовые метки: регурярные выражения, регвыр, regular expression, утверждения, круглые скобки, вопрос
Раздел: Компьютер - Программирование - Регулярные выражения
Запись: xintrea/mytetra_syncro/master/base/1688470002eicbybchom/text.html на raw.github.com

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



q(?!werty)



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


Вот пример:



[^\s]*q(?!werty)[^\s]*



Данный код начинается с поиска любых символов, кроме пробела ([^\s]*), за которыми следует q. Затем парсер достигает «смотрящего вперед» утверждения. Это автоматически делает предшествующий элемент (символ, группу или символьный класс) условным — он будет соответствовать шаблону, только если утверждение верно. В нашем случае, утверждение является отрицательным (?!...), т. е. оно будет верным, если то, что в нем ищется, не будет найдено.


Итак, парсер проверяет несколько следующих символов по предложенному шаблону (werty). Если они найдены, то утверждение ложно, а значит символ q будет «проигнорирован», т. е. не будет соответствовать шаблону. Если же werty не найдено, то утверждение верно, и с q все в порядке. Затем продолжается поиск любых символов, кроме пробела ([^\s]*).



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования