01 re.findall() — найти ВСЁ
Находит все совпадения и возвращает список строк.
prices = re.findall(r'\d+', "Цены: 100р, 250р, 99р")
# ['100', '250', '99'] — список строк!
total = sum(int(p) for p in prices) # 449
⚠️ Результат — всегда список строк! Чтобы считать, конвертируй: int(numbers[0])
Тестер · findall
Текст
Паттерн
02 re.search() — найти ПЕРВОЕ
Находит первое совпадение, возвращает Match-объект или None.
match = re.search(r'\d{11}', "Номер: 89161234567")
if match:
print(match.group()) # 89161234567
print(match.start()) # 8 (позиция)
| Метод Match |
Что возвращает |
.group() |
Найденный текст |
.start() |
Позиция начала |
.end() |
Позиция конца |
.span() |
Кортеж (start, end) |
03 re.match() и re.fullmatch()
match() — начало строки
re.match(r'\d+', '123abc') → ✅
re.match(r'\d+', 'abc123') → ❌
fullmatch() — ВСЯ строка
re.fullmatch(r'\d+', '12345') → ✅
re.fullmatch(r'\d+', '123abc') → ❌
💡 Когда fullmatch? Для валидации: PIN-код ровно 4 цифры → re.fullmatch(r'\d{4}', pin)
Тестер · валидация PIN-кода
Введи PIN
04 re.sub() — найти и заменить
text = "Пароль: 12345, код: 9999"
result = re.sub(r'\d+', '[ЧИСЛО]', text)
# "Пароль: [ЧИСЛО], код: [ЧИСЛО]"
05 re.split() — разрезать строку
text = "яблоко, банан; груша апельсин"
parts = re.split(r'[,;\s]+', text)
# ['яблоко', 'банан', 'груша', 'апельсин']
06 re.finditer()
Как findall, но возвращает итератор Match-объектов — с позициями.
for match in re.finditer(r'\d+', "100р, 250р"):
print(f"'{match.group()}' на позиции {match.start()}")
Шпаргалка модуля 3
| Функция |
Возвращает |
Когда |
findall(p, s) |
Список строк |
Все совпадения |
search(p, s) |
Match / None |
Первое совпадение |
match(p, s) |
Match / None |
Проверка начала |
fullmatch(p, s) |
Match / None |
Валидация формата |
sub(p, r, s) |
Строка |
Замена |
split(p, s) |
Список |
Разрезание |
finditer(p, s) |
Итератор Match |
С позициями |