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

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

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

Содержание

  • Метасимволы
  • Классы
  • Якоря
  • Квантификаторы
  • Модификаторы
  • Функции PHP, использующие регулярные выражения по стандарту PCRE

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

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

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

↑ к началу