Шпаргалка по регулярным выражениям
Собираем весь синтаксис курса в один справочник, к которому удобно возвращаться.
Эта страница — концентрат всего курса. Держите её под рукой, пока синтаксис не уляжется в памяти.
Метасимволы и точка
| Шаблон | Значение |
. | любой символ, кроме \n |
\. | буквальная точка (экранирование) |
\ | экранирует следующий метасимвол |
Классы символов
[abc] | один из a, b, c |
[a-z] | диапазон: строчные латинские |
[^abc] | любой символ, кроме a, b, c |
\d / \D | цифра / не цифра |
\w / \W | буква-цифра-подчёркивание / не она |
\s / \S | пробельный / непробельный |
Кванторы
* | 0 и более (жадно) |
+ | 1 и более (жадно) |
? | 0 или 1 |
{n} / {n,m} / {n,} | ровно n / от n до m / n и более |
*? +? ?? | ленивые версии (минимум) |
Якоря и границы
^ / $ | начало / конец строки |
\b / \B | граница слова / не граница |
Группы и альтернация
(...) | захватывающая группа |
(?:...) | группировка без захвата |
(?P<name>...) | именованная группа |
\1 | обратная ссылка на группу 1 |
a|b | альтернация: a или b |
Проверки (lookaround)
(?=...) | позитивный lookahead |
(?!...) | негативный lookahead |
(?<=...) | позитивный lookbehind |
(?<!...) | негативный lookbehind |
Функции модуля re
re.search | первое совпадение где угодно |
re.match / re.fullmatch | от начала / по всей строке |
re.findall / re.finditer | все совпадения: список / итератор Match |
re.sub / re.split | замена / разбиение по шаблону |
re.compile | скомпилировать паттерн |
Мини-проверка: всё вместе
Финальный пример, где сошлось многое из курса, — разбор пар «ключ=значение» с компиляцией и именованными группами:
import re
rx = re.compile(r"(?P<key>\w+)\s*=\s*(?P<value>\S+)")
config = "host = localhost port=8080\ndebug = true"
for m in rx.finditer(config):
print(m.group("key"), "->", m.group("value"))
Вывод:
host -> localhost port -> 8080 debug -> true
Здесь сошлись: компиляция, именованные группы, готовые классы \w/\S/\s, квантор * и перебор через finditer. Если этот пример понятен целиком — курс усвоен.
Итог
- Шпаргалка собирает метасимволы, классы, кванторы, группы, проверки и функции
re. - Возвращайтесь к ней, пока синтаксис не станет автоматическим.
- Лучший способ закрепить — решать реальные задачи и проверять паттерны в тестере.
Проверьте себя
1. Какой синтаксис у незахватывающей группы?
A(...)
B(?:...)
C(?P<name>...)
D[...]
2. Какая функция re вернёт ИТЕРАТОР объектов Match со всеми совпадениями?
Are.findall
Bre.finditer
Cre.search
Dre.match
3. Что означает \b в шпаргалке?
ABackspace-символ
BГраницу слова — позицию между \w и не-\w
CЛюбую букву
DНачало строки