Регулярные выражения (англ. «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/ но сайт источника на данный момент не работает