从文件中获取字符串

时间:2014-06-19 01:22:48

标签: ruby file screen-scraping

我一直在使用:

open("some.txt") { |f| f.each_line.find_all{ |line| /re/.match(line) } }

这段代码的每个组成部分是什么意思?

1 个答案:

答案 0 :(得分:-1)

一种方法是将结果映射到您想要对它们执行的操作。所以,如果你想要前三个单词,你可以这样做:

open("some.txt") { |f| f.each_line.find_all{ |line| /re/.match(line)}.map{|line| line.split[0...3].join(' ')}

更新:以上假设食谱是该行的第一个单词。您可以修改正则表达式,而不是这样做,这样就可以使用下一个单词字符直到空格\w*\s并重复,例如2到3次{2, 3}

open("some.txt") { |f| f.each_line.find_all{ |line| puts /re(\w*\s){2,3}/.match(line) } }

(在http://rubular.com/上根据需要使用正则表达式)