Главная > Программирование > RegExp - регулярные выражения
Модификаторы шаблонов в регулярных выражениях
Описание возможных модификаторы шаблонов Perl-совместимых регулярных
выражений (PCRE). Имя, взятое в круглые скобки, указывает внутреннее PCRE
имя для данного модификатора.
- i (PCRE_CASELESS)
-
Если этот модификатор используется, символы в шаблоне
соответствуют символам как верхнего, так и нижнего регистра.
- m (PCRE_MULTILINE)
-
По умолчанию PCRE обрабатывает данные как однострочную
символьную строку (даже если она содержит разделители строк).
Метасимвол начала строки '^' соответствует только началу
обрабатываемого текста, в то время как метасимвол "конец
строки" '$' соответствует концу текста, либо позиции перед
завершающим текст переводом строки (в случае, если модификатор D
не установлен). В Perl ситуация полностью аналогична.
Если этот модификатор используется, метасимволы "начало
строки" и "конец строки" также соответствуют позициям
перед произвольным символом перевода и строки и,
соответственно, после. Это соответствует Perl-модификатору \m. В
случае, если обрабатываемый текст не содержит символов
перевода строки, либо шаблон не содержит метасимволов '^' или '$',
данный модификатор не имеет никакого эффекта.
- s (PCRE_DOTALL)
-
Если данный модификатор используется, метасимвол "точка"
в шаблоне соответствует всем символам, включая перевод строк.
Без него - всем, за исключением переводов строк. Этот
модификатор эквивалентен записи /s в Perl. Класс символов,
построенный на отрицании, например [^a], всегда соответствует
переводу строки, независимо от наличия этого модификатора.
- x (PCRE_EXTENDED)
-
Если данный модификатор используется, неэкранированные
пробелы, символы табуляции и пустой строки в шаблоне
игнорируются, если они не являются частью символьного класса.
Также игнорируются все символы между неэкранированным
символом '#' (если он не является частью символьного класса) и
символом перевода строки (включая сами символы '\n' и '#'). Это
эквивалентно Perl-модификатору \x, и позволяет размещать
комментарий в сложных шаблонах. Замечание: это касается только
символьных данных. Пробельные символы не фигурируют в
служебных символьных последовательностях, к примеру, в
последовательности '(?(', открывающей условную подмаску.
- e
-
Если данный модификатор используется, preg_replace() после
выполнения стандартных подстановок в заменяемой строке
интерпретирует ее как PHP-код и использует результат для замены
искомой строки.
Только preg_replace() реагирует на данный модификатор;
остальными функциями он игнорируется.Этот модификатор
недоступен в PHP 3.
- A (PCRE_ANCHORED)
-
Если данный модификатор используется, соответствие шаблону
будет достигаться только в том случае, если он соответствует
началу строки, в которой производится поиск. Того же эффекта
можно достичь подходящей конструкцией с вложенным шаблоном,
которая реализуема в Perl.
- D (PCRE_DOLLAR_ENDONLY)
-
Если данный модификатор используется, метасимвол $ в шаблоне
соответствует только окончанию обрабатываемых данных. Без
этого модификатора метасимвол $ соответствует также позиции
перед последним символом, в случае, если им является перевод
строки (но не распространяется на любые другие переводы строк).
Данный модификатор игнорируется, если используется
модификатор m. В языке Perl аналогичный модификатор отсутствует.
- S
-
В случае, если планируется многократно использовать шаблон,
имеет смысл потратить немного больше времени на его анализ,
чтобы уменьшить время его выполнения. В случае, если данный
модификатор используется, проводится дополнительный анализ
шаблона. В настоящем это имеет смысл только для фиксированных
шаблонов, не содержащих переменных ссылок.
- U (PCRE_UNGREEDY)
-
Этот модификатор инвертирует жадность квантификаторов,
таким образом они по умолчанию не жадные. Но становятся жадными,
если за ними следует символ '?'. Такая возможность не совместима
с Perl. Модификатор U также может использоваться внутри шаблона,
при помощи '?U' записи.
- X (PCRE_EXTRA)
-
Этот модификатор включает дополнительную функциональность
PCRE, которая не совместима с Perl: любой обратный слеш в шаблоне, за
которым следует символ, не имеющий специального значения,
приводят к ошибке. Это обусловлено тем, что подобные комбинации
зарезервированы для дальнейшего развития. По умолчанию же, как
и в Perl, слеш со следующим за ним символом без специального
значения трактуется как as опечатка. На сегодняшний день это все
возможности, которые управляются данным модификатором
- J (PCRE_INFO_JCHANGED)
-
Модификатор (?J) меняет значение опции PCRE_DUPNAMES - подшаблоны могут иметь одинаковые имена.
- u (PCRE_UTF8)
-
Этот модификатор включает дополнительную функциональность
PCRE, которая не совместима с Perl: шаблоны обрабатываются как UTF8
строки. Модификатор u доступен в PHP 4.1.0 и выше для Unix-платформ, и в
PHP 4.2.3 и выше для Windows платформ.
Материал взят с сайта: http://docs.php.net/manual/ru/reference.pcre.pattern.modifiers.php
Главная > Программирование > RegExp - регулярные выражения
|