我一直在使用:
open("some.txt") { |f| f.each_line.detect { |line| /re/.match(line) } }
这只显示该字符串第一次出现在该文件中。如何打印出包含该字符串的所有行。
答案 0 :(得分:2)
答案 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