Регулярные выражения
Поиск и замена по шаблону через модуль `re`.
Регулярные выражения
Что это
Regex — мини-язык для поиска по шаблону в строках. В Python — модуль re. Шаблоны пишут в raw-строках r"...", чтобы не дублировать обратные слеши.
Как читается
import re
text = "у меня 3 кота и 12 собак"
print(re.findall(r"\d+", text)) # ['3', '12']
print(re.sub(r"\d+", "?", text)) # у меня ? кота и ? собак
Ключевые символы:
- \d — цифра, \w — буква/цифра/_, \s — пробел.
- + — один или больше, * — ноль или больше, ? — ноль или один.
- . — любой символ (кроме перевода строки).
- ^ / $ — начало/конец строки, \b — граница слова.
- [...] — набор символов, [^...] — кроме.
- (...) — группа захвата.
Главные функции: re.findall (все совпадения), re.search (первое или None), re.match (только от начала), re.sub (замена), re.split.
Пример
import re
log = "2024-05-03 ERROR connection lost\n2024-05-03 INFO ok"
Найти все строки уровня ERROR
for line in log.splitlines():
if re.search(r"\bERROR\b", line):
print(line)
Когда использовать / подводные камни
👍 Извлечь телефоны/email/даты, нормализовать пробелы, простые валидации.
👎 Не парси регулярками HTML/JSON — есть нормальные парсеры. И на больших объёмах компилируй: pat = re.compile(r"...") один раз, потом pat.findall(text) — ускоряет в разы.