Skip to content

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

Сопоставление символов

[abc] Соответствует любому из символов a, b или c
[^abc] Не соответствует символам a, b или c. «^» эффективен только тогда, когда является первым символом
[a-g] Соответствует любому символу в диапазоне a-g
[^a-g] Не соответствует ни одному символу в диапазоне a-g
[H-N] Соответствует любому символу в диапазоне H-N
[0-9] Соответствует любому символу в диапазоне 0-9
[a-gH-N] Соответствует любому символу в диапазонах a-g или H-N
Специальные символы:
. [^\n\r], соответствует любому символу, кроме перевода строки
\s Пробельные символы: перевод строки, табуляция, пробел и т. д.
\S [^\s] (Любой символ, кроме пробельного)
\d Цифра: [0-9]
\D [^\d] (Любой символ, кроме цифры)
\w Буквенно-цифровой символ: [0-9A-Za-z_]
\W [^\w] (Любой символ, кроме буквенно-цифрового)

Группы сопоставления

(a b)
(…) Захватывающая группа
(?:…) Незахватывающая группа
(?<name>…) или (?’name’…) Именованная захватывающая группа, «name» можно задать произвольно
(?(condition)true_regex false_regex)

group(0) используется для получения всей совпавшей строки целиком, в то время как group(>0) позволяет извлекать подгруппы из общего результата.

Примечание: Именованные группы захвата поддерживаются начиная с Java 1.7 (путем передачи строки «name» в качестве параметра в метод group). JS и Python на данный момент не поддерживают именованные группы захвата нативно.

Квантификаторы (Диапазоны частоты)

{3} Предыдущий элемент встречается ровно 3 раза, эквивалентно {3,3}
{3,6} Предыдущий элемент встречается от 3 до 6 раз
{3,} Предыдущий элемент встречается не менее 3 раз
{0,6} Предыдущий элемент встречается не более 6 раз
Специальные символы:
* {0,} (Ноль или более)
+ {1,} (Один или более)
? {0,1} (Ноль или один)
\w* Жадный режим
\w*? Нежадный режим

Якоря (Привязки к позиции)

^ Начало строки
$ Конец строки
\b Boundary, граница слова
\B Не граница слова
Проверки (Lookaround assertions):
(?=exp) Положительная опережающая проверка (после идет exp)
(?<=exp) Положительная ретроспективная проверка (перед идет exp)
(?!exp) Отрицательная опережающая проверка (после не идет exp)
(?<!exp) Отрицательная ретроспективная проверка (перед не идет exp)

\b(\w+)\b эквивалентно (?<=\W?)(\w+)(?=\W?)