通配符**如何在fnmatch中工作?

时间:2012-06-04 15:08:14

标签: ruby wildcard matching

我注意到Ruby的fnmatch函数令人惊讶的行为:

File.fnmatch('**.rb', 'main.rb')                    #=> true
File.fnmatch('**.rb', './main.rb')                  #=> false

the Ruby reference中的解释而言,**将:

  

递归匹配目录或扩展文件。

那么为什么它不会扩展并匹配./main.rb

1 个答案:

答案 0 :(得分:5)

此行为实际上是documented,但很容易错过。埋在示例中说:

  

通配符默认情况下不与前导期匹配。

要启用此行为,您需要指定 File :: FNM_DOTMATCH 标记:

File.fnmatch('**.rb', './main.rb', File::FNM_DOTMATCH)
=> true