Учебник по основам PHP. PHPBeginner

цена сайдинга в белоруссии

Синтаксис регулярных выражений - часть 7


У этих претензий есть одна особенность: что считать началом и концом текста (строки)? Установка модификатора m указывает на то, что конец и начало строки могут обозначаться символом (\п). Например, шаблон /~А/т ищет букву «А» либо в начале текста, либо после каждого символа (\п). При установленном модификаторе D знак $ обозначает исключительно фактический конец текста, иначе же (если указан модификатор т) он также может обозначать конец строки, то есть то, что непосредственно после фрагмента должен следовать символ перевода строки (\п). В отличие от модификатора D, влияющего только на претензию конца строки, модификатор m влияет на обе. Если текст не содержит символов перевода строки, эти модификаторы не имеют значения.

Следующими претензиями, аналогичными описанным выше, являются подстановки \А, \Z, \z, обозначающие соответственно фактическое начало текста, конец текста или перевод строки, и фактический конец текста. Эти претензии не зависят от модификаторов. Например, шаблон /\A.*T\Z.+\z/ra будет искать символ «Т» в конце строки, но не текста.

Дополнительными похожими претензиями являются подстановки \b и \В, обозначающие соответственно «на» и «не на» границе «слова». Словом считается последовательность, ограниченная пробельными символами (включая переводы строк) или началом или концом текста. А границей — промежуток между двумя символами, один из которых пробельный, а другой нет. Например, шаблон /\bпре(\^)ый\b/ ищет все слова, имеющие приставку «пре-» и окончание «-ый».

Более сложные виды претензий указываются в виде подшаблонов, и они дополнительно проверяют фрагмент текста до или после точки совпадения:

  • (?=текст) — текст после точки совпадения должен соответствовать указанному;
  • (?!текст) — текст после точки совпадения не должен соответствовать указанному;
  • (?<=текст) — текст до точки совпадения должен соответствовать указанному;
  • (?<!текст) — текст до точки совпадения не должен соответствовать указанному.

Их отличие от простого указания последовательностей в подшабло-не в том, что фрагмент совпадения с такой претензией не возвращается в результате. Например, шаблон /(?<=\()\w+(?=\))/ возвращает всякое слово, стоящее в скобках без пробелов, но сами скобки не возвращаются.




Начало  Назад  Вперед



Книжный магазин