我一直在使用:
open("some.txt") { |f| f.each_line.find_all{ |line| /re/.match(line) } }
这段代码的每个组成部分是什么意思?
答案 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/上根据需要使用正则表达式)