Регулярные выражения: модуль re
Модуль re в Python: регулярные выражения для поиска, извлечения и замены текста — search, findall, sub и основные шаблоны.
Регулярное выражение (regex) — это шаблон для поиска и обработки текста. Модуль
reвстроен в Python и позволяет находить, извлекать и заменять фрагменты строк по гибким правилам.
Основные метасимволы
Символ | Значение | Пример |
| цифра [0-9] |
|
| буква, цифра или _ |
|
| пробельный символ |
|
| любой символ кроме \n |
|
| один или более |
|
| ноль или более |
|
| ноль или один |
|
| начало строки |
|
| конец строки |
|
re.search() — найти первое совпадение
import re
text = "Заказ №12345 принят 05.06.2024"
match = re.search(r'\d+', text)
if match:
print("Найдено:", match.group()) # первое число
print("Позиция:", match.start(), "-", match.end())
Вывод:
Найдено: 12345 Позиция: 8 - 13
Используйте r-строки для шаблонов:
r'\d+'. В обычной строке обратный слеш нужно экранировать:'\\d+'. R-строка избавляет от двойных слешей.
re.findall() — найти все совпадения
import re
text = "Цены: 100 руб., 250 руб., 1490 руб."
numbers = re.findall(r'\d+', text)
print(numbers)
total = sum(int(n) for n in numbers)
print("Итого:", total, "руб.")
Вывод:
['100', '250', '1490'] Итого: 1840 руб.
re.sub() — замена по шаблону
import re
# Удалим все цифры из строки
text = "abc123def456"
result = re.sub(r'\d+', '', text)
print(result)
# Заменим несколько пробелов одним
messy = "Слова с лишними пробелами"
clean = re.sub(r'\s+', ' ', messy)
print(clean)
Вывод:
abcdef Слова с лишними пробелами
Группы захвата
Скобки () выделяют группу — фрагмент, который можно извлечь отдельно:
import re
log = "2024-06-05 ERROR Подключение не удалось"
match = re.search(r'(\d{4}-\d{2}-\d{2}) (\w+) (.+)', log)
if match:
date = match.group(1)
level = match.group(2)
msg = match.group(3)
print(f"Дата: {date}")
print(f"Уровень: {level}")
print(f"Сообщение: {msg}")
Вывод:
Дата: 2024-06-05 Уровень: ERROR Сообщение: Подключение не удалось
Коротко
re.search(pattern, text)— первое совпадение;re.findall()— список всех;re.sub()— замена.- Используйте r-строки для шаблонов:
r'\d+'. - Скобки
()создают группу захвата; извлекают черезmatch.group(N). - Основные метасимволы:
\d— цифра,\w— слово,\s— пробел,.— любой символ.
Закрепите практикой
Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.