НЕ МОЛЧИ!!!    Сделай что-нибудь, чтобы остановить войну России в Украине.
...бойтесь людей равнодушных - именно с их молчаливого согласия происходят все самые ужасные преступления на свете.   ("Репортаж с петлёй на шее")

Справочник по регулярным выражениям

В доступной форме приводятся основные элементы языка описания шаблонов регулярных выражений.

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

↓ Метасимволы ↓ Якоря
↓ Классы ↓ Модификаторы
↓ Квантификаторы ↓ Функции 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 позволяет задать символ, который также будет экранироваться.

В следующей статье на тему регулярных выражений закрепим знания на актуальных примерах.

↑ к началу