我目前正在构建一个工具,需要将文件名与模式进行匹配。为了方便起见,我计划提供惰性匹配(类似于glob)和正则表达式匹配。例如,以下两个代码片段最终会产生相同的效果:
@mylib.rule('static/*.html')
def myfunc():
pass
@mylib.rule(r'^static/([^/]+)\.html')
def myfunc():
pass
据我所知,r''
只对Python解析器有用,它实际上是在解析后创建一个标准的str
实例(唯一的区别是它保留了\
)。有人知道如何区分这两者吗?
我不想为相同目的提供两个备选装饰器,更糟糕的是手动解析字符串以确定它是否为正则表达式。
@mylib.rule(re.compile(r'^stat...'))
。 - intuited*
?如果我的文件名中有\\
并且被迫使用r"
字符串来提供“fnmatch”模式,我该怎么办? - S.Lott[]()
字符的字符串几乎肯定是一个正则表达式。只要有文档,那就没问题了。但是正如我所说,我会使用两个装饰器以获得更大的清晰度。 - saalaa