例如,我有以下名称的文件:
435_red.rb
32_red_blue.rb
9921_blue.rb
在第一种情况下,我需要按蓝色模式获取 9921_blue.rb 文件。
在第二种情况下,我必须按红色模式获取 435_red.rb 文件。
在第三种情况下,我需要使用 red_blue 模式 32_red_blue.rb 文件。
我怎样才能做到这一点?
我尝试使用类似的东西
pattern = "blue"
result = Dir.glob(File.join(directory, '**.*')).select do |f|
f.match(pattern)
end
但结果将返回两个值:
["32_red_blue.rb", "9921_blue.rb",]
而不仅仅是“9921_blue.rb”
答案 0 :(得分:1)
也许是这样的
def get_files_by_pattern(dir, pattern)
Dir.glob(File.join(dir, '/*.rb')).select do |f|
f.split("/")[-1][/^\d*\_#{pattern}\.rb$/]
end
end
答案 1 :(得分:1)
我认为你只需要使用正确的模式,使用正则表达式(regexp)。也许:
pattern = /\A\d+_blue\.rb\Z/
regexp是模式匹配字符串的强大工具。一些资源: