Ruby Regex不匹配

Mor*_*ten 1 ruby regex

我正在运行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
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Tim*_*ker 5

要确保只匹配确切的扩展名,请使用

File.delete(f) unless File.extname(f) =~ /^\.(?:flv|gif)$/
Run Code Online (Sandbox Code Playgroud)

说明:

^     # Start of string
\.    # Match .
(?:   # Match the following: Either...
 flv  # flv
|     # or
 gif  # gif
)     # End of alternation
$     # End of string
Run Code Online (Sandbox Code Playgroud)