我正在运行 Ruby 1.9.2p290 和 Rails 3.1.0.rc5。当我运行这个正则表达式时,它匹配所有内容:
files = Dir.glob("#{File.dirname(video.path)}/*")
files.each do |f|
File.delete(f) unless File.extname(f) =~ /[.flv|.gif]/
end
我错过了什么吗?
最佳答案
要确保只匹配确切的扩展名,请使用
File.delete(f) unless File.extname(f) =~ /^\.(?:flv|gif)$/
解释:
^ # Start of string
\. # Match .
(?: # Match the following: Either...
flv # flv
| # or
gif # gif
) # End of alternation
$ # End of string
关于Ruby 正则表达式不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6971410/