为了获得部分文本,我在触发器前使用了一个kludge:
desired_portion_lines = text.each_line.find_all do |line|
true if line =~ /start_regex/ .. line =~ /finish_regex/
end
desired_portion = desired_portion_lines.join
如果我删除
true if
位,它就会抱怨范围值不正确(argumenterror)
有没有可能使它不那么乱糟糟的,或者我只是应该这样做
desired_portion_lines = ""
text.each_line do |line|
desired_portion_lines << line if line =~ /start_regex/ .. line =~ /finish_regex/
end
还是有更好的方法不使用枚举?
最佳答案
如果你是一行一行的,我的偏好是这样的
line =~ /finish_regex/ && p=0
line =~ /start_regex/ && p=1
puts line if p
如果你是一串的话。我会用split
mystring.split(/finish_regex/).each do |item|
if item[/start_regex/]
puts item.split(/start_regex/)[-1]
end
end