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 |
.+ (жадный) |
Максимум символов |
.+? (ленивый) |
Минимум символов |