Мне нужно было вытащить email из логов. Открыл ChatGPT: "дай regex для email на Питоне". Секунда - получил строчку:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}
Скопировал, запустил. Что-то нашло. Окей, вроде работает.
Через день коллега спросил: почему половина адресов пропала из выгрузки? Обычные адреса, ничего странного. Паттерн их просто не увидел.
Я уставился на эту строчку. Правильная она? Понятия не имел. Проверить как - тоже. Там проблема и началась. Регулярное выражение - шаблон для поиска в тексте. Пишешь что ищешь, Питон находит.
import re
text = "купил хлеб и ещё хлеб" result = re.findall("хлеб", text) print(result)
Результат: ['хлеб', 'хлеб']
Слово "хлеб" - уже регулярка. Но regex умеет описывать не только точный текст, а целые классы символов. Цифры вообще, буквы вообще, повторения, позиции.
Разберём тот паттерн из ChatGPT по кусочкам. [abc] Скобки означают: подойдёт любой символ из этого списка. [abc] найдёт a или b или c. [a-z] Диапазон через дефис.