我们可以在两个正则表达式中使用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(这是filenamefnmatch的第一个参数)没有被用作正则表达式,它只是传递给re.match的字符串。

您还可以从代码中看到第二个参数pattern是经过翻译的,而不是直接用作正则表达式,因为“ Unix shell样式通配符”语法不是正则表达式。我建议您阅读the documentation


  我们可以在两个正则表达式中使用fnmatch吗?


不,我们不能。

10-07 16:46