В доступной форме приводятся основные элементы языка описания шаблонов регулярных выражений.
Ниже в удобной табличной форме приведены элементы, используемые для составления шаблонов регулярных выражений. Чтобы не загромождать справочник излишней информацией, но и не отходить от терминов, описание использованных специальных элементов языка дано в вводной статье Введение в регулярные выражения. Для удобства поиска ниже приведены ссылки на основные разделы справочника.
↓ Метасимволы | ↓ Якоря |
↓ Классы | ↓ Модификаторы |
↓ Квантификаторы | ↓ Функции PHP |
Метасимволы
Список специальных символов, используемых в регулярных выражениях: \ | ^ $ [ ] ( ) { } . ? * +
Ниже в таблице приведено описание некоторых специальных символов, применяемых в шаблонах.
Символ | Описание | Примечание |
---|---|---|
\d | Любая цифра | Аналог: [0-9] |
\D | Любой не цифровой символ | Аналог: [^0-9] |
\s | Управляющий символ | Аналог:[\n\r\t\f\v] |
\S | Непустой символ (все, кроме символов, определяемых метасимволом \s) | Аналог:[^\t\n\r\f\v] |
\w | Текстовые, цифровые символы и символ подчеркивания | Аналог:[a-zA-Z0-9_] |
\W | Все, кроме символов, определяемых метасимволом \w | Аналог:[^a-zA-Z0-9_] |
Метасимволы, в зависимости от своей позиции в шаблоне, имеют разное назначение.
Символ | Описание | Примечание |
---|---|---|
Метасимволы, используемые вне класса | ||
\ | Допускает несколько вариантов применения: экранирует метасимволы, позволяя использовать их в качестве обычных; используется для задания невидимых символов; используется для задания некоторых специальных диапазонов символов; указывает место поиска в строке |
|
^ | Привязывает поиск к началу текста или строки | |
$ | Привязывает поиск к концу текста или строки | |
. | Обозначает любой символ, в том числе и непечатный, кроме перевода строки | |
( | Начало подшаблона | |
) | Окончание подшаблона | |
{ | начало квантификатора | |
} | Окончание квантификатора | |
Метасимволы, используемые внутри класса | ||
\ | Экранирует метасимвол, превращая его в обычный символ | \ab\ncd\ – строка abncd |
^ | Исключает последующие символы класса из поиска | [^a-z] – все строчные символы исключены из поиска |
— | Используется для указания интервала символов | \a-z\ – все строчные символы |
. | Символ точки |
Классы
Символ | Описание | Примечание |
---|---|---|
[ | Определяет начало описания символьного класса | |
] | Определяет конец описания символьного класса | |
[ ] | Ищется любой из символов, указанный в скобках | Внутри скобок указывайте требуемые символы без разделителей |
[^] | Из поиска исключается любой из символов в скобках после знака ^ | Например,[^abc] – исключить из поиска символы «a», «b», «c» |
. | Обозначает обычный символ точки | |
\w | Любой текстовый символ | Аналог:[a-zA-Z0-9_] |
\W | Любой символ, не являющийся текстовым | Аналог:[^a-zA-Z0-9_] |
\s | Любой пробельный символ из набора Unicode (whitespace) | невидимые символы \t, \n, \r, \f |
\S | Любой непробельный символ из набора Unicode | |
\d | Любые ASCII-цифры | Тоже, что и [0-9] |
\D | Любой символ, отличный от ASCII-цифр | Тоже, что и [^0-9] |
{ | начало квантификатора | |
} | окончание квантификатора |
Якоря
Символ | Описание | Примечание |
---|---|---|
^ | Привязка шаблона поиска к началу строки или текста при использовании вне класса | Значение метасимвола зависит от места в шаблоне |
$ | Привязка шаблона поиска к концу строки или текста | Значение метасимвола зависит от параметров поиска |
\b | Совпадения должно быть на границе слова | Внутри класса означает символ backspace |
\B | Совпадения не должно быть на границе слова | |
\A | Определяет начало данных, не зависит от параметра многострочного режима | Нельзя использовать в классах |
\n | Означает символ перехода на новую строку | |
\r | Означает символ возврата каретки | |
\Z | Конец текста | Нельзя использовать в классах |
Квантификаторы
Используются для указания количества повторений предшествующих символов, позволяет указать конкретное значение или диапазон значений. Указывается в фигурных скобках после нужных символов. Необходимо помнить, что по умолчанию квантификаторы «жадные»(greedy), что не всегда приемлемо. «Жадные» квантификаторы пытаются захватить часть входного текста с возможно большим повторением, в то время как «не жадные» – находят текст с минимальным повторением.
Символ | Описание | Примечание |
---|---|---|
{n,m} | Искать предшествующий шаблон, который повторяется не менее n и не более m раз | «Жадный» |
{n,} | Искать предшествующий шаблон, повторенный n или более раз | «Жадный» |
{n} | Искать предшествующий шаблона, повторенный точно n раз | «Жадный» |
? | Соответствует нулю или одному экземпляру предшествующего шаблона | Эквивалентно {0,1}, «жадный» |
+ | Искать один или более экземпляров предшествующего шаблона | Эквивалентно {1,}, «жадный» |
* | Соответствует нулю или более экземплярам предшествующего шаблона | Эквивалентно {0,}, «жадный» |
*? | Соответствует нулю или более экземплярам предшествующего шаблона | Эквивалентно {0,}, не «жадный» |
+? | Искать один или более экземпляров предшествующего шаблона | Эквивалентно {1,}, не «жадный» |
?? | Соответствует нулю или одному экземпляру предшествующего шаблона | Эквивалентно {0,1}, не «жадный» |
{n,m}? | Искать предшествующий шаблон, который повторяется не менее n и не более m раз | Не «жадный» |
Модификаторы
Ниже приведен список метасимволов, управляющих режимом поиска. Указываются после символьного шаблона, например \строка_поиска\m
Символ | Описание | Примечание |
---|---|---|
i | Регистронезависимый режим поиска | |
m | Многострочный режим поиска | |
s | Cимвол «.» (точка) в шаблоне при этом модификаторе соответствует всем символам, включая перенос строки, по умолчанию — исключая перенос строки | |
A | Привязка к началу текста | Модификатор m не влияет на этот метасимвол |
Z | Привязка к концу текста | Модификатор m не влияет на этот метасимвол |
Функции PHP, использующие регулярные выражения по стандарту PCRE
В PHP для поиска по шаблону Perl совместимых регулярных выражений можно использовать такие функции.
int preg_match(string шаблон, string строка [, array совпадения]) – ищет в заданной строке заданную строку шаблона, при совпадении возвращает true, иначе false.
int preg_match_all(string шаблон, string строка, array совпадения [, int порядок]) – ищет все совпадения шаблона в заданной строке. Последний необязательный параметр определяет порядок сохранения совпадений в массиве и может принимать значения:
preg_pattern_order(по умолчанию) – выходной элемент с индексом 0 содержит массив совпадений для всего регулярного выражения, элемент с индексом 1 содержит массив всех совпадений для первого подвыражения в круглых скобках и т. д.;
preg_set_order – выходной элемент с индексом 0 содержит массив с текстом, совпавшим со всеми подвыражениями в круглых скобках для первого найденного совпадения, элемент с индексом 1 содержит аналогичный массив для второго найденного совпадения и т. д.
mixed preg_replace(mixed шаблон, mixed замена, mixed строка [, int порог]) — ищет в заданной строке совпадение для шаблона и заменяет его новым фрагментом, необязательный последний параметр задает максимальное количество замен в строке.
array preg_split(string шаблон, string строка [, int порог [, int флаги]]) – разбивает заданную строку на элементы, границы которых определяет входной шаблон.
array preg_grep(string шаблон, array массив) – ищет и возвращает все элементы заданного массива, в которых совпадает заданный шаблон.
preg_quote(string $str [, string $delimiter = NULL ]) – функция во входной строке $str ставит обратный слэш перед каждым служебным символом, где служебными являются символы из списка.
\ + * ? [ ^ ] $ ( ) { } = ! < > | : —
Необязательный параметр $delimiter позволяет задать символ, который также будет экранироваться.
В следующей статье на тему регулярных выражений закрепим знания на актуальных примерах.