4

我注意到fnmatchRuby 函数的一个令人惊讶的行为:

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

至于Ruby 参考中的解释,**将:

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

那么为什么它不扩展和匹配./main.rb呢?

4

1 回答 1

5

这种行为实际上已记录在案,但很容易错过。埋在它说的例子中:

默认情况下,通配符与前导句点不匹配。

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

File.fnmatch('**.rb', './main.rb', File::FNM_DOTMATCH)
=> true
于 2012-06-04T15:42:08.203 回答