fnmatch函数有两个正则表达式参数

时间:2015-07-03 10:36:30

标签: python regex unix

我们可以将fnmatch与两个正则表达式一起使用吗?

例如,如果我使用fnmatch("file*", "*", 0),那么它会匹配吗?

4 个答案:

答案 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

namefilenamefnmatch的第一个参数)不能用作正则表达式,它只是传递给它的字符串re.match

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

  

我们可以将fnmatch与两个正则表达式一起使用吗?

不,我们不能。

答案 2 :(得分:0)

fnmatch用于将文件名与“shell-style”表达式匹配(而不是正则表达式)。我不知道你想要完成什么,但总之,不。你需要给它一个特定的文件名然后一个模式来匹配它,它不会试图看看两个模式是否一致。

答案 3 :(得分:0)

不,你不能那样使用fnmatch。它们不是你正在使用它的正则表达式。你需要给它一个特定的文件名然后一个模式来匹配它,它不会试图看看两个模式是否一致。