В настоящее время я создаю инструмент, который должен сопоставлять имена файлов с шаблоном. Для удобства я намереваюсь обеспечить как ленивое сопоставление (в стиле глобуса), так и сопоставление регулярным выражением. Например, следующие два фрагмента в конечном итоге будут иметь одинаковые эффекты:
@mylib.rule('static/*.html')
def myfunc():
pass
@mylib.rule(r'^static/([^/]+)\.html')
def myfunc():
pass
AFAIK r''
полезен только для анализатора Python и фактически создает стандартный экземпляр str
после синтаксического анализа (единственное отличие состоит в том, что он сохраняет \
).
Кто-нибудь знает способ отличить одно от другого?
Мне бы не хотелось предоставлять два альтернативных декоратора для одной и той же цели или, что еще хуже, вручную анализировать строку, чтобы определить, является ли это регулярным выражением или нет.