我有一些文本文件,需要提取一些单行的第一个实例,一些连续的行和一些行之间的文本:
文件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
如果您觉得这有太多帮助,请求我欣赏提示/指示。
答案 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