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


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


/p>

В классах символов метасимволом является знак диапазона «минус» (-), а метасимвол инвертирует класс методом «все символы, кроме указанных».

Обычно пробелы в шаблоне рассматриваются как значащие. При установке же модификатора х все пробелы в шаблоне и все символы от знака # и до конца строки воспринимаются как комментирующие. Тем не менее, в классах символов пробел и знак # всегда являются значащими. В маркерах специальных подшаблонов не допускается использование пробелов, так как тогда нарушается смысл маркеров (сравните: (?<= ххх) и (? < = ххх)).

Например, шаблон (неплохой пример, хотя он и неадекватно работает с одинаковыми вложенными тегами):

'% < ([*> ]+) (['>]*) > # открывающий тег (и атрибуты тега) (.*) # содержимое тега < / \1 > # закрывающий тег ?xis'

эквивалентен шаблону:

'*<(Г> ]+)(Г>]*)>(.*Н?#содержимое Tera)</\l>*is'

Далее рассматриваются способы использования метасимволов.

Подстановки

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

Подстановки, обозначаемые символом обратного слеша (\), бывают пяти видов.

1. Подстановка непечатного символа.

Вместо следующих последовательностей вставляется:

  • \а - символ BEL (07 в ASCII);
  • \е — символ escape (hex IB в ASCII);
  • \f — символ прогонки страницы formfeed (hex ОС в ASCII);
  • \n — символ перевода строки newline (hex OA в ASCII);
  • \г — символ возврата каретки (hex OD в ASCII);
  • \t — символ табуляции (hex 09 в ASCII);
  • \сх — символ «Control-X», где х — любой буквенный символ.

Фактическое же действие последовательности \сх следующее: если «х» в нижнем регистре, он преобразуется в верхний, затем бит 6 (hex 40) этого символа инвертируется. Таким образом «\cz» становится шестнадцагеричным 1А, а «\с{»становится \хЗВ, тогда как «\с;» становится \х7В.




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