使用ruby从文件中提取各种行

时间:2011-11-03 00:22:10

标签: ruby

我有一些文本文件,需要提取一些单行的第一个实例,一些连续的行和一些行之间的文本:

  

文件1

     

文件标题
   (TOD)

     

第3版   第2版​​

     

作者

     Thomas P. Thomas,John L. John,
  Fred A. Fred,Sandra K. Sandra

     

公司A地址

     

更多作者

     

第3页

从这个例子中,我需要“文档标题(TOD)”,3,2,以及作者和第3页之间的所有文本,不包括在内。我正在慢慢学习所以我有一些代码片段,但它们还远远不够。我可以得到一个匹配但需要第一个实例,以及实例和下一行:

File.open("sample.txt").each do |line|
    if line[/Document/]
        puts line

我试图介入干预文本,但这不太正确:

File.open("sample.txt").each do |line|
while gets
  print if [/Authors/../Page/]
end

如果您觉得这有太多帮助,请求我欣赏提示/指示。

1 个答案:

答案 0 :(得分:3)

不是逐行读取文件,而是认为在整个事物中阅读更容易,然后用正则表达式搜索它。类似的东西:

File.open("sample.txt","r") do |f|
  text = f.read

  # everything between Document and Authors
  m1 = text.match(/Document(.*)Authors/m)

  # everything between Authors and Page
  m2 = text.match(/Authors(.*)Page/m)
end