Есть подстава в стандартном модуле
re, о которой многие узнают слишком поздно.Интуитивно кажется, что шаблон:
^Hello$должен матчить только строку
"Hello".Но нет. В Python он матчится и на:
"Hello\n"То есть
$ считает позицию перед переводом строки концом строки. И если ты валидируешь ввод, заголовки, токены, протоколы и т.д. — можно случайно пропустить лишний \n.✅ Правильнее для «строка целиком»
Использовать якоря начала/конца реальной строки:
\A — начало всей строки\z — конец всей строки (без поблажек на newline)
\AHello\z
Это гарантирует, что ни одного лишнего символа, даже
\n, нет.Раньше
\z был нормальной практикой почти везде… кроме Python (и JS).Но теперь Python 3.14 добавил поддержку
\z — и он становится универсальным и безопасным вариантом.📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
