Утверждения регулярных выражений в PHP позволяют значительно увеличить возможности выборки, указав интерпритатору определенные условия, которым должна соответствовать строка.
Утверждения в регулярных выражениях
Утверждение – это проверка символов, следующих до или после текущего символа. Простейшие утверждения закодированы последовательностями \A, \Z, ^, $ , более сложные утверждения кодируются при помощи специальных подшаблонов.
Существует два основных типов утверждений: те которые обрабатывают символы до текущего элемента и те, которые обрабтывают символы после текущего элемента.
«Смотрящие вперед» утверждения ищут совпадения в строке за текущей позицией поиска и начинаются с «?=» для позитивных утверждений и с «?!» для негативных. К примеру выражение
\w+(?=;)
совпадает с любым словом, заканчивающимся на «;», а выражение
дуб(?!ина)
совпадает с любым словом дуб, после которого нет последовательности символов ина (дубина).
«Смотрящие назад» утверждения ищут совпадения перед текущей позицией. Позитивные утверждения этого типа начинаются с «?<=» , негативные – с «?<!» . Смотрящим назад утверждениям позволено искать только строки фиксированной длины, т.е. в них нельзя использовать квантификаторы. Например,
(?<!дуб)ина
находит все появления ина, перед которыми нет дуб.