\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, вот это вот всё.