为了获得部分文本,我在触发器前使用了一个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

10-05 20:44
查看更多