I have a file that I want to scan for matches of a regular expression.
The expression crosses multiple lines (/m), so I can’t use each_line.
I’ve been using scan, but I now need a match data object for each match
so I can get the position of the match. Is there a way to loop through
matches and get the match data for each match when all the data is in a
single string with multiple matches in it?
For arguments sake, here is the data:
public sub method1()
op1()
op2()
end sub
public sub method2(lots, of,
variables, over, many, lines)
op1()
op2()
end sub
public function method3() as string
op1()
op2()
end function
Here is the regular expression:
/^(?:(private|public)\s)?(sub|function)\s(.+?)\s?(.?)(?:\sas\s(.+?))?(?:’.?)?$.*?end\s\2/im
What is current returned by scan:
[‘public’,‘sub’,‘method1’,nil]
[‘public’,‘sub’,‘method2’,nil]
[‘public’,‘function’,‘method3’,‘string’]
What I want:
[MatchData,MatchData,MatchData]
Jeremy