🧠 Продвинутые советы по работе с Regex в Python
Всегда компилируй регулярные выражения. Это ускоряет работу при многократном использовании, делает код чище и упрощает тестирование.
import re
RE_EMAIL = re.compile(r"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b", re.I)
emails = RE_EMAIL.findall(text)
Используй raw-строки и re.VERBOSE, чтобы regex был читаемым, а не выглядел как случайный набор символов.
RE_DATE = re.compile(r"""
\b
(?P\d{4})-(?P0[1-9]|1[0-2])-(?P0[1-9]|[12]\d|3[01])
\b
""", re.VERBOSE)
Если группа не нужна в выводе - делай её non-capturing (?:...). Это уменьшает расходы памяти и путаницу с индексами групп.
re.findall(r"(?:https?://)?(?:www\.)?example\.com/\S+", text)
Используй правильные якоря. \A и \Z безопаснее для валидации, чем ^ и $, которые зависят от флага MULTILINE.
re.match(r"\A\d+\Z", "123\n")
Контролируй код и ставь ограничения.
Бесконтрольный .* — частая причина зависаний и ReDoS.
re.search(r"]{0,2000}>", html)
Lookahead и lookbehind позволяют искать текст без захвата. Это мощный инструмент для точных выборок.
m = re.search(r"(?
@Python_Community_ru
888 ·