Шпаргалка по регулярным выражениям
Сопоставление символов
| [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?)