我注意到Ruby的fnmatch
函数令人惊讶的行为:
File.fnmatch('**.rb', 'main.rb') #=> true
File.fnmatch('**.rb', './main.rb') #=> false
就the Ruby reference中的解释而言,**
将:
递归匹配目录或扩展文件。
那么为什么它不会扩展并匹配./main.rb
?
答案 0 :(得分:5)
此行为实际上是documented,但很容易错过。埋在示例中说:
通配符默认情况下不与前导期匹配。
要启用此行为,您需要指定 File :: FNM_DOTMATCH 标记:
File.fnmatch('**.rb', './main.rb', File::FNM_DOTMATCH)
=> true