Ruby 正则表达式不匹配

标签 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

我错过了什么吗?

最佳答案

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

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/

相关文章:

c# - 在密码强度验证器中检查字符时,正则表达式似乎无法识别和计数

regex - Sed 用另一个字符的多次重复替换一个字符的多次重复

ruby - Nokogiri 未定义方法 'attribute' nilClass

arrays - 根据匹配的 id 删除数组中的重复项。导轨

ruby-on-rails - 从数组中提取多个键值属性

排除特定字符的正则表达式

php - preg_match() 和用户名

css - 使用 Watir 在 td 中单击链接

ruby-on-rails - 在编写单元/功能测试时考虑缓存

python - 仅在与其他匹配组不同时才匹配组