我们可以将fnmatch
与两个正则表达式一起使用吗?
例如,如果我使用fnmatch("file*", "*", 0)
,那么它会匹配吗?
答案 0 :(得分:1)
没有。 fnmatch的模式不是正则表达式 - 根据python标准的lib文档,它们是“Unix shell样式的通配符”
答案 1 :(得分:1)
例如,如果我使用
fnmatch("file*", "*", 0)
,它将与此匹配 情况?
是的,当然,一旦删除了多余的第三个参数,它就会出现:
>>> from fnmatch import fnmatch
>>> fnmatch("file*", "*")
True
然而,它是不匹配,因为它将两个参数都解释为正则表达式;它匹配,因为模式"*"
将匹配filename
的任何输入,包括"file*"
。您可以在the source code中看到这一点:
return re_pat.match(name) is not None
name
(filename
,fnmatch
的第一个参数)不能用作正则表达式,它只是传递给它的字符串re.match
。
您还可以从代码中看到第二个参数pattern
被翻译而不是直接用作正则表达式,作为" Unix shell样式的通配符&#34 ; 语法不是正则表达式。我建议你阅读the documentation。
我们可以将
fnmatch
与两个正则表达式一起使用吗?
不,我们不能。
答案 2 :(得分:0)
fnmatch
用于将文件名与“shell-style”表达式匹配(而不是正则表达式)。我不知道你想要完成什么,但总之,不。你需要给它一个特定的文件名然后一个模式来匹配它,它不会试图看看两个模式是否一致。
答案 3 :(得分:0)
不,你不能那样使用fnmatch
。它们不是你正在使用它的正则表达式。你需要给它一个特定的文件名然后一个模式来匹配它,它不会试图看看两个模式是否一致。