在文件中搜索字符串(ruby)

时间:2014-06-18 22:10:17

标签: ruby

我一直在使用:

open("some.txt") { |f| f.each_line.detect { |line| /re/.match(line) } }

这只显示该字符串第一次出现在该文件中。如何打印出包含该字符串的所有行。

3 个答案:

答案 0 :(得分:2)

detect仅返回第一个。 find_all将为您提供所有匹配行的数组。

答案 1 :(得分:1)

添加到@Some Guy回答。

您还有#select我认为更常用。

奖励:您可以使用方法#[]代替regex#match。它应该快一点,在你的情况下工作得很好。

open("some.txt") { |f| f.each_line.select { |line| line['re'] } }

答案 2 :(得分:0)

您可以通过以下方式获得您正在寻找的行为:

File.open("some.txt") do |f|
  f.each do |line|
    puts line if line =~ /re/
  end
end

如果你真的想要一个数组,每行都与正则表达式匹配,那么#find_all是可行的方法:

File.open("some.txt") do |f|
  lines = f.find_all {|line| line =~ /re/ }
end