🏠 /

Регулярки

Особо не нужны
  • Регулярки сложно читать и сложно писать
  • Приведу пару альтернатив регуляркам + дам пару советов как проще писать регулярки

Решение типовых задач

  • Часто регулярки используют для решения типовых задач: парс телефонов, почт, дат
  • На все эти задачи есть более robust решения:
    • python-dateutil — для парса дат
    • phonenumbers — для парса телефонов
    • email-validator — для парса почт
    • Либы для парсинга также содержат типовые парсеры: так pydantic умеет парсить урлы, цвета, карты и прочее

Есть тулы мощнее регулярок

parse — как раз такой пример:

  • По базе предоставляет более читаемый синтаксис чем регулярки:
    r = parse("Bring out the holy {item}", "Bring out the holy hand grenade")
    print(r)
    <Result () {'item': 'hand grenade'}>
    
  • Можно еще и делать мощные штуки: напр. парсить определенные слова в bool
    yesno_mapping = {
        "yes":  True,   "no":    False,
        "on":   True,   "off":   False,
        "true": True,   "false": False,
    }
    
    @with_pattern(r"|".join(yesno_mapping))
    def parse_yesno(text):
        return yesno_mapping[text.lower()]

Если очень надо

Если очень надо написать регулярку, то упростить процесс их написания помогут:

  • Чекеры регулярок, типа regex101
  • Чекер регулярок прям в IDE Чекер регулярок прям в IDE
  • Конечно же писать юнит-тесты
  • Мы же вошли в эпоху AI — так что имеет смысл спросить совета у AI
  • Всегда полезно обновить знания по регуляркам:
    • Напр. кол-во повторяющийся символов можно указать в скобках: \d{3}
    • А для матчинга любого символа нужно использовать специальный флаг — re.DOTALL