Статья Автор: Деникина Н.В., Деникин А.В.

Составные паттерны

01 Группы — скобки

Скобки (...) группируют части паттерна и захватывают текст.

⚠️ Ловушка с findall! Когда в паттерне есть (...), findall возвращает только содержимое групп, а не всё совпадение. Решение: (?:...) — группа БЕЗ захвата.
Тестер · группы vs без захвата
Текст
Паттерн
 
 
💡 Правило Нужно ИЗВЛЕЧЬ часть? → (...). Нужно только СГРУППИРОВАТЬ? → (?:...)

02 Извлечение частей

Группы позволяют извлечь ЧАСТИ совпадения — например, день, месяц и год из даты:

match = re.search(r'(\d{2})\.(\d{2})\.(\d{4})', "Дата: 25.01.2024")
match.group(1)  # '25' (день)
match.group(2)  # '01' (месяц)
match.group(3)  # '2024' (год)
Тестер · извлечение частей
Текст
Паттерн
 
 

03 Альтернативы (ИЛИ)

Символ | означает «ИЛИ»:

Тестер · альтернативы
Текст
Паттерн
 
 

04 Жадность и ленивость

По умолчанию квантификаторы жадные — захватывают максимум. Добавь ? для ленивого режима.

Жадный: .+

Захватит максимум символов

Ленивый: .+?

Захватит минимум символов

Тестер · жадный vs ленивый
Текст
Паттерн
 
 

💡 Сравни: жадный захватит всё между первым <b> и последним </b>


05 Универсальный тестер

Песочница
Текст
Паттерн
 
 

Шпаргалка модуля 4

Элемент Значение
(...) Группа с захватом
(?:...) Группа без захвата
A|B A или B
.+ (жадный) Максимум символов
.+? (ленивый) Минимум символов
Печать