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

Собираем весь синтаксис курса в один справочник, к которому удобно возвращаться.

Эта страница — концентрат всего курса. Держите её под рукой, пока синтаксис не уляжется в памяти.

Метасимволы и точка

ШаблонЗначение
.любой символ, кроме \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Начало строки
Поддержать проект