\w+: Опять о своих регулярках думает\.
\w+: Регулярки мои регулярочки\.
О том, как писать меньше регулярок в питоне.
+
parse -- противоположность
str.format. Задаёте строку форматирования, пропихиваете текст, а на выходе подстановки:
>>> parse("It's {}, I love it!", "It's spam, I love it!")
<Result ('spam',) {}>Отлично работает в двух случаях (а когда оба одновременно, так вообще идеально):
1. Нужна обратимость. Распарсили, подправили кусок, собрали обратно. Для простых случаев есть
re.sub, для сложных... Тоже он, на самом деле, туда ведь функцию можно передать. Но лучше так не делать.
2. Строка шаблона длинная и сложная, а "переменная" часть совсем небольшая. Я так из своего Go кода названия тестов достаю. Сигнатура у тестов длинная и с кучей символов, и регулярка здесь состояла бы из сплошных экранирований. А с parse получается красивый короткий шаблон.
Есть проблемы с тем, чтобы внутри шалона всё-таки задать кастомную регулярку. Там есть для этого механизм, но он очень ограниченный. Зато для простых случаев самое то.
+
cursive_re -- конструктор регулярок из конструкции человекочитаемых функций:
>>> hash = text('#')
>>> hexdigit = any_of(in_range('0', '9') + in_range('a', 'f') + in_range('A', 'F'))
>>> hexcolor = (
... beginning_of_line() + hash +
... group(repeated(hexdigit, exactly=6) | repeated(hexdigit, exactly=3)) +
... end_of_line()
... )+
expynent -- коллекция популярных регулярок, чтобы не писать самому. Ну там email, url, вот это вот всё.