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

Stationary Bike Reviews

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


Подшаблоны нумеруются но порядку открывающей круглой скобки, и для доступа к фрагменту текста, совпадающему с подшаблоном, используются обратные ссылки формата: слеш, за которым следует число, большее 0 и меньшее 100, указывающее, к какому подшаблону ссылка относится (первой цифрой числа не должен быть ноль).

Заметьте, вместо ссылки подставляется фрагмент реального текста; например, регулярное выражение /слов(о|а) и числ\1/ будет подходить фразе: «слово и число» и «слова и числа», но не «слова и число»; а регулярное выражение /(A+)6\l/i не будет подходить строке «Аба», хотя и указано игнорирование регистра.

Ссылка может быть использована тогла и в том месте шаблона, когда ей уже можно будет однозначно сопоставить фрагмент текста. Например, конструкции (а\1) и (а|(b+))\2 неправильны.

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

(.*), (.)*, ([abc]*), ([abc])* (\2|\1+), (\2|\1)+.

Когда на подшаблон не имеется ссылок, его можно пометить указанием после открывающей скобки последовательности ?:, это исключает подшаблон из списка ссылок. Например, регулярное выражение /a((b+)(?:c*))(d?)/ будет иметь три ссылки: 1 -- на подшаблон ((b+)(?:с*)), 2 — на (b+) и 3 —.на (d?). Это может использоваться для увеличения общего числа подшаблонов до 200 (99 со ссылками и 101 без них). В такой форме записи становится возможным указывать внутренние модификаторы между ? и :, например: (?i:c|e|) эквивалентно (?:(?i)c|e|).

При необходимости указания внутри шаблона комментария (и возможном нежелании использовать модификатор х) допустимо исполь-

зовать подшаблоны комментариев (?#мой комментарий), игнорируемые при обработке.

Претензии

«Претензии» (assertions) представляют собой дополнительные проверки символов, окружающих место совпадения фрагмента с той позицией шаблона, в которой указана претензия.

Простейшие из них " и $ обозначают, что фрагмент должен находиться соответственно в начале или в конце текста. Так, шаблон /*А/ указывает на то, что ищется символ «А» в начале текста, а шаблон /Z$/ на то, что ищется символ «Z» в конце текста. Как видно из примеров, сами символы л и $, должны находиться соответственно в начале или конце шаблона. Шаблон /привет$/ будет проверять, состоит ли текст целиком из слова «привет».




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



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