Как получить только строки с определенными словами или фразами? - PullRequest
0 голосов
/ 15 мая 2011

Мне нужно прочитать файл в серии строк, а затем извлекать конкретные строки в зависимости от содержащихся слов в них. Как я могу это сделать?

Пока я читаю такие строки:

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 ]

3 голосов
/ 15 мая 2011
lines = File.readlines("myfile.txt").grep(/red|rabbit|blue/)
1 голос
/ 15 мая 2011

Регулярные выражения - ваш друг.Они быстро выполнят эту задачу.

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

Вы хотели бы регулярное выражение по линиям

/^.*(red|rabbit|blue).*$/

^ означает начало строки, .* означает совпадение с чем угодно, (red|rabbit|blue) означает именно то, что вы думаете, что это означает, и, наконец, $ означает конец строки.

0 голосов
/ 15 мая 2011

Я думаю, что каждый цикл будет лучше в этой ситуации:

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

Дайте этому шанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...