class Regexp::Parser
def interval(target_node, token)
def interval(target_node, token) text = token.text mchr = text[text.length-1].chr =~ /[?+]/ ? text[text.length-1].chr : nil case mchr when '?' range_text = text[0...-1] mode = :reluctant when '+' range_text = text[0...-1] mode = :possessive else range_text = text mode = :greedy end range = range_text.gsub(/\{|\}/, '').split(',', 2) min = range[0].empty? ? 0 : range[0] max = range[1] ? (range[1].empty? ? -1 : range[1]) : min target_node.quantify(:interval, text, min.to_i, max.to_i, mode) end