如何仅检索包含特定单词或短语的行?

时间:2011-05-15 16:37:52

标签: ruby

我需要读取一系列行中的文件,然后 根据包含的单词检索特定行 在他们中。我怎么能这样做?

到目前为止,我读到了这样的行:

lines = File.readlines("myfile.txt")

现在,我需要扫描包含“红色”,“兔子”,“蓝色”的行。我希望尽可能少的代码行完成这一部分。

所以,如果我的文件是:

the red queen of hearts.
yet another sentence.
and this has no relevant words.
the blue sky
the white chocolate rabbit.
another irrelevant line.

我只想看到这些行:

the red queen of hearts.
the blue sky
the white chocolate rabbit.

3 个答案:

答案 0 :(得分:3)

lines = File.readlines("myfile.txt").grep(/red|rabbit|blue/)

答案 1 :(得分:1)

正则表达式是你的朋友。他们将迅速完成这项任务。

http://www.tutorialspoint.com/ruby/ruby_regular_expressions.htm

你想要一个

的正则表达式
/^.*(red|rabbit|blue).*$/

^表示行首,.*表示匹配任何内容,(red|rabbit|blue)表示您认为的含义,最后$表示行尾。

答案 2 :(得分:0)

我认为在这种情况下每个循环都是最好的:

lines.each do |line|
    if line.include? red or rabbit or blue
        puts line
    end
end

试一试。