T
Trans
Hi--
I have a it bit of a puzzle for Regexp engine hackers out there. The
#to_a method on MatchData gives a simple list of matching portions of
the matched text.
md = /(1)(2(3))(4)/.match "012345"
md.to_a
["1234", "1", "23", "3", "4"]
But I would like a method the produces a linearly segmented list of the
text itself, like this:
["0", "1", "2", [ "3" ], "4", "5" ]
Notice the array depth corresponds to the subexpression depth.
My first stab was:
def matchlist
# good idea to cache?
@matchset ||= pre_match + self[1..-1] + post_match
end
But obviously that does not work when there are subexpressions.
Is such a method even possible?
Thanks,
T.
I have a it bit of a puzzle for Regexp engine hackers out there. The
#to_a method on MatchData gives a simple list of matching portions of
the matched text.
md = /(1)(2(3))(4)/.match "012345"
md.to_a
["1234", "1", "23", "3", "4"]
But I would like a method the produces a linearly segmented list of the
text itself, like this:
["0", "1", "2", [ "3" ], "4", "5" ]
Notice the array depth corresponds to the subexpression depth.
My first stab was:
def matchlist
# good idea to cache?
@matchset ||= pre_match + self[1..-1] + post_match
end
But obviously that does not work when there are subexpressions.
Is such a method even possible?
Thanks,
T.