\w+: Опять о своих регулярках думает. \w+: Регулярки мои регулярочки.

О том, как писать меньше регулярок в питоне.

  • parse – противоположность str.format. Задаёте строку форматирования, пропихиваете текст, а на выходе подстановки:
<Result ('spam',) {}>```

Отлично работает в двух случаях (а когда оба одновременно, так вообще идеально):

1. Нужна обратимость. Распарсили, подправили кусок, собрали обратно. Для простых случаев есть `re.sub`, для сложных... Тоже он, на самом деле, туда ведь функцию можно передать. Но лучше так не делать.

2. Строка шаблона длинная и сложная, а "переменная" часть совсем небольшая. Я так из своего Go кода названия тестов достаю. Сигнатура у тестов длинная и с кучей символов, и регулярка здесь состояла бы из сплошных экранирований. А с parse получается красивый короткий шаблон.

Есть проблемы с тем, чтобы внутри шалона всё-таки задать кастомную регулярку. Там есть для этого механизм, но он очень ограниченный. Зато для простых случаев самое то.

+ [cursive_re](https://github.com/Bogdanp/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](https://github.com/lk-geimfari/expynent) -- коллекция популярных регулярок, чтобы не писать самому. Ну там email, url, вот это вот всё.