Регулярные выражения PCRE в PHP. Шпаргалка c примерами.

Регулярные выражения (англ. «regular expressions», жарг. «регэкспы» или «регексы») —- современная система поиска текстовых фрагментов в электронных документах, основанная на специальной системе записи образцов для поиска.

Шпаргалка c примерами регулярных выражений PCRE в PHP. Частично использовалась для создания регулярных выражений при составлении триггеров в Zabbix.

Таблица

символ описание пример строка и соответствие
обычные все символы , кроме специальных. Соответствуют сами себе а причал
от от кота
12 612-2123
специальные символы

[ ] \ ^ $ . | ? * + ( ) { }

Чтобы использовать как сиволы текста, нужно их предварить «\» \(812\) тел. (812)812-24-15
0\.5 320.5 3205
е\? Что? Где? Когда?
^ Начало строки ^ааа ааа
^ма март или май
$ Конец строки a$ ааа аа$
^бег$ бег
бегун
\b Граница слова а\b а он когда завтра?
\bон вон он
\B Не граница слова \Bон вон он
\G Предыдущий успешный поиск \Ga aaa aaa (поиск остановился на 4-й позиции — там, где не нашлось a)
. любой символ кроме символа новой строки «\n» м.й мой май мама
Символьный класс — Набор символов в квадратных скобках [ ] в данном месте — один из перечисленных символов 2[19]5 215 265 21 295
он[?!] тон? Нет, не тон. Полутон!
Возможно указание диапазонов символов. [0-9] соответствует любой цифре. [А-Яа-я] — любая буква русского алфавита кроме «ё» и «Ё» 2[0-9]4 204 24 234
л[А-Яа-я]н луна лень лён слОн
л[А-Яа-яёЁ]н луна лень лён слОн
[^] -символ, который не входит в набор [^0-9] 212или 213 конфет
\d Соответствует цифре. Эквивалентно [0-9] img\d img5 img74 img
\D Соответствует нецифровому символу. Эквивалентно [^0-9]
\s Соответствует любому пробельному символу. Эквивалентно [ \f\n\r\t\v]
\S Соответствует любому непробельному символу. Эквивалентно [^ \f\n\r\t\v]
\w Соответствует любому буквенному символу, цифровому и знаку подчеркивания. Эквивалентно [[:word:]]
\W Соответствует любому символу, кроме буквенного символа, цифрового или подчеркивания. Эквивалентно [^[:word:]]
Квантификация (сколько раз предшествующее выражение может встречаться.)
{n} ровно n раз [0-9]{3} 316 29 15 1
{m,n} от m до n раз [0-9]{2,3} 316 29 15 1
{m,} не менее m раз cто{2,}й стой, стоой, стооой
{0,n} не более n раз сто{0,3}й стой, стоой, стооой, стоооой
* ноль или более раз. Эквивалентно {0,} сто* ст сто стоо
+ Один или более раз. Эквивалентно {1,} сто+ ст сто стоо
? Ноль или одно. Эквивалентно {0,1} сто? ст сто стоо
cт?л стол стул ст5л стл
Жадная и ленивая квантификация
Жадная квантификация Максимально длинная строка из возможных

Обычные квантификаторы * + ? {m,n} являются жадными

 

<.*> <span>123</span>
\(.+\) (812)234, (812)235
cт.{3,}й стооооой. Что это за лай
Ленивая квантификация

*? +? ?? {m,n}?

Минимально длинная строка из возможных <.*?> <span>123</span>
\(.+?\) (812)234,(812)235
ст.{3,}?й стооооой. Что это за лай
Сверхжадная

*+ ++ ?+ {m,n+}

Действует как жадный, при этом не возвращается к точке возврата

подробнее

<.*+> <span>123</span>

Соответствие не будет найдено, поскольку после символа «<» .*+ «скушает» все оставшиеся: span>123</span> . После чего символ «>» будет не найден.

Группировка
() для групировки. Шаблон внутри как единое целое. может быть квантифицирован ([a-z][0-9]-)+ a7-b9-c26-e5-d13
(ab){3} abcabababcdab
для получения значения сегодня ([0-9]+) сегодня 18 января. $1 — вернёт ’18’
группировка без обратной связи
(?:)
отмена получения значения. сегодня (?:[0-9]+) $1 ничего не вернёт
() \1 … \9 обозначения от \1 до \9 для проверки на совпадение с ранее найденной подстрокой ([0-9])\1 88, 96, 99, 25, 11
([а-я])[а-я]*\1 сос, нос, кок, тот
(..|..) или первая часть или вторая (\+7|8)-[0-9-]* 8-812-243-12-63, +7-376-9052412
(он|ты|я) я, ты, он, она — вместе дружная семья
атомарная групировка (?>шаблон) запрещает проверку любых других вариантов внутри группы, когда один вариант уже найден. + отмена получения значения a(?>bc|b|x)cc abccaxcc
но не abccaxcc : вариант x найден, остальные проигнорированы. $1 тоже ничего не вернёт
(?i) (?s) (?m) (?g) (?x) (?r) Включает соответствующий модификатор (?i)onE onE, one, OnE
(?-i) (?-s) (?-m) (?-g) (?-x) (?-r) Выключает модификатор (?-i)onE onE, oNe, one, OnE
(?i-sm) Включает и выключает несколько модификаторов
(?i-s:шаблон) Включает/Выключает модификаторы только в пределах группы (?i)o(?-i:n)E onE, oNe, one, OnE, oNE

буква n должна быть маленькой

(?#комментарий) группа не проверяется на вхождение в текст. [0-9](?#одна цифра)d5

взята тут https://sajgak.ru/site/php/shpargalka-regularnie-virageniya-pcre/ но сайт источника на данный момент не работает