2011-05-15 129 views
0

我需要讀取一系列行中的文件,然後 根據其中包含 的單詞檢索特定行。我怎樣才能做到這一點?如何僅檢索包含特定單詞或短語的行?

到目前爲止,我看這樣行:

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. 
+0

我想你不想讓包含字符串「紅」等的行。你想要包含它們的行作爲單詞。看到我對floatless的答案的評論。 – sawa 2011-05-15 20:30:36

+0

[查找與正則表達式匹配的文本文件中的行]重複(http://stackoverflow.com/questions/6002868/finding-lines-in-a-text-file-matching-a-regular-expression) – Phrogz 2011-05-15 21:33:40

回答

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

This將匹配包括「Fred」,「jackrabbit」,「bluer」的行。正則表達式應該是'/ \ b(?:red | rabbit | blue)\ b /'。 – sawa 2011-05-15 20:28:33

1

正則表達式是你的朋友。他們將迅速完成這項任務。

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

你想沿着

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

^行正則表達式是指線的開始,.*手段匹配任何(red|rabbit|blue)意味着什麼,你認爲它的意思,最後是$表示行結束。

0

我覺得每一個循環的話最好在這種情況下:

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

把那一個鏡頭。

相關問題