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