re — Регулярные выражения

Модуль re предоставляет операции поиска по шаблону, валидации и обработки текста с помощью регулярных выражений.

import re

Базовый поиск

import re

# Поиск в любом месте строки
match = re.search(r'\d+', 'Возраст: 25 лет')
if match:
    print(match.group())  # '25'
    print(match.start())  # 9

# Поиск в начале строки
match = re.match(r'Hello', 'Hello World')

# Полное совпадение
match = re.fullmatch(r'\d{3}-\d{4}', '123-4567')

Поиск всех совпадений

import re

text = "Звоните 555-1234 или 555-5678"

numbers = re.findall(r'\d{3}-\d{4}', text)
print(numbers)  # ['555-1234', '555-5678']

# Итератор объектов match
for m in re.finditer(r'\d{3}-\d{4}', text):
    print(f"Найдено {m.group()} на позиции {m.start()}")

Замена

import re

# Простая замена
result = re.sub(r'World', 'Python', 'Hello World')

# Замена через функцию
def double(match):
    return str(int(match.group()) * 2)

re.sub(r'\d+', double, 'Цена: 10, Налог: 5')
# 'Цена: 20, Налог: 10'

Разделение

import re

re.split(r'[,;\s]+', 'один, два; три четыре')
# ['один', 'два', 'три', 'четыре']

Краткий справочник синтаксиса

Шаблон Значение
. Любой символ (кроме \n)
\d Цифра [0-9]
\w Символ слова [a-zA-Z0-9_]
\s Пробельный символ
* 0 или более
+ 1 или более
? 0 или 1
{n,m} от n до m повторений
^ / $ Начало / конец строки
[abc] Класс символов
(...) Группа захвата
\b Граница слова

Флаги

re.IGNORECASE  # Без учёта регистра (re.I)
re.MULTILINE   # ^ и $ по границам строк (re.M)
re.DOTALL      # . включает перевод строки (re.S)
re.VERBOSE     # Комментарии в шаблоне (re.X)

Частые ошибки

Официальная документация

re — Regular expression operations

Полный справочник API (API Reference)

Важные функции

Функция Описание
re.compile(pattern, flags=0) Компилирует паттерн регулярного выражения в объект.
re.search(pattern, string) Ищет первое совпадение с паттерном в любом месте строки.
re.match(pattern, string) Ищет совпадение только в самом начале строки.
re.fullmatch(pattern, string) Проверяет, совпадает ли вся строка целиком с паттерном.
re.split(pattern, string) Разбивает строку по паттерну.
re.findall(pattern, string) Возвращает все непересекающиеся совпадения в виде списка строк.
re.sub(pattern, repl, string) Заменяет все вхождения паттерна на строку repl.

Объект Match (Результат)

Метод/Атрибут Описание
Match.group([group1]) Возвращает найденную подстроку или конкретную группу захвата.
Match.groups() Возвращает кортеж всех захваченных групп.
Match.start() Индекс начала совпадения в исходной строке.
Match.end() Индекс конца совпадения.
Match.span() Кортеж (start, end).