我们可以在两个正则表达式中使用fnmatch
吗?
例如,如果我使用fnmatch("file*", "*", 0)
,在这种情况下会匹配吗?
最佳答案
例如,如果我使用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样式通配符”语法不是正则表达式。我建议您阅读the documentation。我们可以在两个正则表达式中使用
fnmatch
吗?不,我们不能。