Шпаргалка по регулярным выражениям
Спецсимволы и обычные знаки | ||
---|---|---|
Спецсимволы |
$ ^ . * + ? \ { } [ ] ( ) |
|
|
Обычные знаки |
@ : , ' " ; - _ = <> % # ~ `& ! /
|
|
Спецсимволы | ||
Символ | Аналог | Описание |
.
|
Любой символ кроме \n и перевода строки | |
\
|
Экранирование спец символа | |
|
|
[]
|
Логическое «или» |
\d
|
[0-9]
|
Все цифры |
\D
|
[^\d]
|
Все не цифры |
\s
|
[\t\v\r\n\f] \t табуляция\v вертикальная табуляция\r возврат каретки\n новая строка\f конец страницы
|
Все символы пробела, включая переносы строк, табуляции и неразрывные пробелы |
\S
|
[^\s]
|
Все символы, кроме пробела, переноса строк, табуляции и неразрывного пробела |
\w
|
[0-9a-z_]
|
Все цифры или буквы включая знак подчеркивания (кириллица не входит в буквы) |
\W
|
[^\w]
|
Любой символ, кроме цифры, буквы или знака подчеркивания |
Якоря | ||
Символ | Пример | Описание |
^
|
|
Привязка к началу строки, по умолчанию PCRE ищет совпадения с шаблоном только внутри одной строки, а символ ^ совпадает только с началом всего текста. Когда установлен модификатор m , ^ совпадает с началом отдельных строк |
$
|
|
Привязка к концу строки, по умолчанию PCRE ищет совпадения с шаблоном только внутри одной строки, а символ $ совпадает только с концом всего текста. Когда установлен модификатор m , $ совпадает с концом отдельных строк |
Ограничитель | ||
Символ | Пример | Описание |
#
/
&
|
|
В качестве ограничителей могут выступать не только # , но и любые другие символы (только не буквы и не цифры).Всё зависит от того, что мы хотим использовать внутри выражения. Если будет использована решётка, то внутри её придётся экранировать. Но если поставить ограничители & , то решётку внутри них не придётся экранировать. |
Квантификаторы символьные | ||
Символ |
Аналог
|
Описание |
+
|
{1,}
|
Символ повторяется один или более раз (оператор действует на тот символ, который стоит перед ними) |
*
|
{0,}
|
Символ повторяется ноль или более раз (оператор действует на тот символ, который стоит перед ними) |
?
|
{0,1}
|
Символ повторяется ноль или один раз, может присутствовать или нет (оператор действует на тот символ, который стоит перед ними) |
Квантификаторы {} | ||
Символ | Пример | Описание |
{5}
|
|
Пять повторений |
{2,5}
|
|
От двух до пяти повторений (оба включительно) |
{2,}
|
|
Повторяется два и более раз |
{m,n}?
|
|
Повторяется минимальное количество раз |
{m,}?
|
|
Повторяется указанное количество раз |
Набор символов, логический оператор «или» [ ] | ||
Символ | Пример | Описание |
[abv]
|
|
Диапазон символов «любое из», работает как логический оператор или |
[a-z]
|
|
Диапазон маленьких латинских букв |
[^a-z]
|
|
Исключающий диапазон символов «любое кроме маленьких латинских букв» |
[A-Z]
|
|
Диапазон больших латинских букв |
[^A-Z]
|
|
Исключающий диапазон символов «любое кроме больших латинских букв» |
[а-яё]
|
|
Диапазон маленьких русских букв, работает только с модификатором поддержки UTF-8 u |
[А-ЯЁ]
|
|
Диапазон больших русских букв, работает только с модификатором поддержки UTF-8 u |
[0-9]
|
|
Диапазон цифр от 0 до 9 |
[.+-*/]
|
|
Спецсимволы внутри [] становятся обычными символами. Это значит, что их не надо экранировать обратным слешем. Исключение составляют только сами [] и ^ которые нужно экранировать |
Группа символов, логический оператор «и» ( ) | ||
Символ | Пример | Описание |
()
|
|
Группирует вместе символы, содержащиеся в круглых скобках, найдет вместе стоящие ab |
Карманы ( ) | ||
Символ | Пример | Описание |
()
|
|
Карман - это такой способ хранения части того, что мы ищем. Карманы появляются, если использовать скобки ( ). Их можно подставлять во второй параметр функции, используя порядковый номер и знак $. |
Несохраняющие скобки (?: ) | ||
Символ | Пример | Описание |
(?: )
|
|
Скобки () выполняют две функции - группировка символов и функцию кармана. А что делать, если нам нужно сгруппировать, но в карман не класть? Для решения такой проблемы придуманы специальные несохраняющие скобки
(?: ) - они группируют, но не кладут в карман
|
Позитивный просмотр вперед (?= ) | ||
Символ | Пример | Описание |
(?= )
|
|
Ищет строку aaa и заменяет ее на ! , но только если после aaa стоит x , а сам x при этом не заменит |
Негативный просмотр вперед (?! ) | ||
Символ | Пример | Описание |
(?! )
|
|
Наоборот, говорит чего должно не быть. В следующем примере замена произойдет, только если после
aaa не стоит
x
|
Позитивный просмотр назад (?<= ) | ||
Символ | Пример | Описание |
(?<= )
|
|
Ищет строку aaa и заменяет ее на ! , но только если перед aaa стоит x , а сам x при этом не заменит |
Негативный просмотр назад (?<! ) | ||
Символ | Пример | Описание |
(?<! )
|
|
В следующем примере замена произойдет, только если перед aaa не стоит
x
|
Позиции внутри строк | ||
Символ | Пример | Описание |
^
|
^a
|
Соответствует началу строкиa aa aaa |
$
|
a$
|
Соответствует концу строки aaa aa a |
\A
|
\Aa
|
Соответствует началу текстаa aa aaaaaa aaa |
\z
|
a\z
|
Соответствует концу текста aaa aaa aaa aa a |
\b
|
a\b
|
Граница слова, утверждение: предыдущий символ словесный, а следующий нет, либо наоборот
aa a aaa
a aa a aa
|
\B
|
\Ba\B
|
Отсутствие границы слова a a a aa a |
\G
|
\Ga
|
Предыдущий успешный поиск, поиск остановился на 4-й позиции, где не нашлось aaaa aaa |
Модификаторы (флаги) | ||
Символ | Описание | |
g
|
Ищет все совпадения со «строкой-шаблоном» (по умолчанию поиск останавливается после первого совпадения) | |
u
|
Поддержка юникода, регулярка будет обрабатывать в кодировке UTF-8 | |
x
|
Все неэкранированные пробельные символы, которые находятся вне символьного класса, будут проигнорированы | |
i
|
Регистронезависимый поиск (a и A считаются эквивалентными) |
|
m
|
Многостроковый режим. По умолчанию PCRE ищет совпадения с шаблоном только внутри одной строки, а символы ^ и $ совпадают только с началом и концом всего текста. Когда этот параметр установлен, ^ и $ совпадают с началом и концом отдельных строк |
|
s
|
Однострочность, контент считается одной строкой в отличие от режима по умолчанию, символ . включает в себя пробельные символы начинает совпадать с переносом строки, хотя по умолчанию нет |
|
U
|
Инвертирует "жадность" для каждого квантификатора (если же после квантификатора стоит
? , этот квантификатор перестает быть "жадным").
|
|
X
|
Экранировка обычного символа приведет к ошибке, без X обычные символы можно экранировать, они все равно будут обозначать сами себя (исключение: цифры, они станут карманами) |
|
Жадность | ||
Символ | Описание | |
?
|
Жадность можно ограничивать всем операторам повторения, в том числе и ? , и {} и + и * - вот так: ?? и {}?
и
+? и *?
|