Шпаргалка по основам регулярных выражений
Регулярное выражение (regex) — это шаблон для поиска текста. Каждый символ, или токен, меняет поведение шаблона. Шпаргалка ниже перечисляет самые ходовые токены с простым объяснением и небольшим примером для копирования.
| Токен | Значение | Пример |
|---|---|---|
| . | Matches any single character except newline. | a.c matches abc, a c |
| * | Matches the preceding token zero or more times. | ab* matches a, abb |
| + | Matches the preceding token one or more times. | ab+ matches ab, abb |
| ? | Makes the preceding token optional (zero or one). | colou?r matches color, colour |
| [] | Character set: matches any one character inside. | [aeiou] matches any vowel |
| [^] | Negated set: matches any character NOT inside. | [^0-9] matches any non-digit |
| \d | Matches any digit (0-9). | \d+ matches 42, 007 |
| \w | Matches any word character (a-z, A-Z, 0-9, _). | \w+ matches hello_1 |
| \s | Matches any whitespace (space, tab, newline). | a\sb matches a b |
| ^ | Anchors the match to the start of a line/string. | ^Hello matches start of string |
| $ | Anchors the match to the end of a line/string. | world$ matches end of string |
| | | Alternation: matches the pattern on either side. | cat|dog matches cat or dog |
| () | Groups a sub-pattern (and captures it). | (ab)+ matches ab, abab |
| {n,m} | Quantifier: match the preceding token n to m times. | a{2,4} matches aa, aaaa |
| (?i) | Inline flag: makes the pattern case-insensitive. | (?i)hello matches HELLO |
Примечания
- Внутри набора символов [ ] большинство токенов теряют специальный смысл. Например, . внутри [] совпадает просто с точкой.
- Обратная косая (\) — escape-символ: делает специальный токен буквальным символом и наоборот.
- Движки различаются: Python, JavaScript, PCRE и Golang имеют общие токены, но флаги и look-around поддерживаются по-разному.
Частые вопросы
- Что соответствует точке (.) ?
- По умолчанию точка соответствует любому одиночному символу, кроме перевода строки. Чтобы совпал сам символ точки, его экранируют как \.
- В чём разница между * и + ?
- Звёздочка * соответствует предыдущему токену ноль и более раз, поэтому 'ab*' совпадает и с 'a'. Плюс + требует хотя бы одного — совпадает с 'ab', но не с одной 'a'.
- Как соответствовать цифре или словесному символу?
- Используйте \d для любой цифры (0-9) и \w для любого буквенно-цифрового символа (буквы, цифры, подчёркивание). Отрицания — \D и \W.
- Для чего нужны ^ и $ ?
- ^ привязывает совпадение к началу строки или текста, $ — к концу. Вместе ^шаблон$ заставляет совпасть весь текст целиком.