Учебник РНР (перевод Alexandr Pyramidin) Размещено на PHPClub.Net
Назад Вперёд

Модификаторы патэрна

(unknown)

Модификаторы патэрна - Описаны возможные модификаторы regex-патэрнов.

Описание

Текущие возможные PCRE-модификаторы перечислены ниже. Имена в скобках это внутренние PCRE-имена этих модификаторов.

i (PCRE_CASELESS)

Если этот модификатор установлен, буквы в патэрне совпадают независимо от регистра.

m (PCRE_MULTILINE)

По умолчанию PCRE считает строку-субъект состоящей из одной "строчки" символов (даже если она содержит несколько символов новой строки/newline). Метасимвол "начало строки" (^) совпадает с началом строки, а метасимвол "конец строки" ($) совпадает только с концом строки и перед символом новой строки (если только не установлен модификатор D). То же самое и в Perl.

Если этот модификатор установлен, конструкции "начало строки" и "конец строки" совпадают с точками непосредственно до или сразу после символа newline в строке-субъекте, соответственно, а также в самом начале и в самом конце. Эквивалентно Perl-модификатору /m. Если в строке-субъекте нет символов "\n" или отсутствуют ^ или $ в патэрне, установка этого модификатора не даст эффекта.

s (PCRE_DOTALL)

Если этот модификатор установлен, метасимвол dot (точка) соответствует всем символам, включая символы новой строки. Без него - символы новой строки исключаются. Этот модификатор эквивалентен Perl'овскому модификатору /s. Отрицательный класс, такой как [^a], всегда совпадает с символом новой строки вне зависимости от установки этого модификатора.

x (PCRE_EXTENDED)

Если этот модификатор установлен, пробельные символы в патэрне игнорируются, кроме тех случаев, когда они заменяются (escape), или когда находятся внутри класса символов, а символы между незаменёнными/unescaped # вне класса символов и следующий символ newline, включительно, также игнорируются. Это эквивалентно Perl-модификатору /x и даёт возможность включать комментарии внутрь сложных патэрнов. Заметьте, однако, что это применимо только символьным данным. Пробельные символы никогда не могут появляться внутри последовательностей специальных символов в патэрне, например, внутри последовательности (?(, которая вводит условный субпатэрн.

e

Если этот модификатор установлен, preg_replace() выполняет нормальную замену обратных ссылок в замещающей строке, вычисляет её как код PHP и использует результат для замещения строки поиска.

Этот модификатор используется только в preg_replace(); он игнорируется другими PCRE-функциями.

A (PCRE_ANCHORED)

Если этот модификатор установлен, патэрн форсированно "заякоривается/anchored", то есть, он ограничивается совпадением только в начале строки для поиска ("строки-субъекта"). Этого же эффекта можно добиться также применением соответствующих конструкций в самом патэрне, что является единственно возможным способом в Perl.

D (PCRE_DOLLAR_ENDONLY)

Если этот модификатор установлен, метасимвол dollar в патэрне совпадает только в конце строки-субъекта. Без этого модификатора dollar совпадает также непосредственно перед последним символом, если это newline (но не перед любыми другими newline). Этот модификатор игнорируется, если установлен модификатор m. Это не эквивалент аналогичного модификатора в Perl.

S

Если патэрн используется неоднократно, то нужно потратить время на его анализ, чтобы ускорить процесс поиска совпадений. Если этот модификатор установлен, то этот дополнительный анализ выполняется. В настоящее время, изучение патэрна используется только в незаякоренных патэрнах, которые не имеют одиночного фиксированного стартового символа.

U (PCRE_UNGREEDY)

Этот модификатор инвертирует "жадность" квантификаторов, так что они становятся нежадными по умолчанию, но становятся жадными, если после них идёт символ "?". Это несовместимо с Perl. Он может быть также установлен с помощью установки модификатора (?U) внутри патэрна.

X (PCRE_EXTRA)

Этот модификатор включает дополнительную функциональность PCRE, которая несовместима с Perl. Любой backslash (\), после которого в патэрне идёт буква, не имеющая специального значения, вызывает ошибку, резервируя таким образом эти комбинации для последующего расширения. По умолчанию, как и в Perl, backslash с последующей буквой, не имеющей специального значения, рассматривается как литерал. В настоящее время отсутствуют другие свойства, контролируемые этим модификатором.

u (PCRE_UTF8)

Этот модификатор включает дополнительную функциональность PCRE, которая несовместима с Perl. Строки патэрна рассматриваются как UTF-8. этот модификатор доступен в PHP 4.1.0 или более новой версии.


НазадОглавление Вперёд
Функции регулярных выражений (Perl-совместимые) Вверх Синтаксис патэрна