Matchdata

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

On 11/23/06, Jeremy W. [email protected] wrote:
[snip]

What I want:
[MatchData,MatchData,MatchData]

something like this

‘aa’.scan(/a/) {|i| p $~ }

thanks, that worked great

Simon S. wrote:

Simon S.

Jeremy W.
Serval Systems Ltd.

www.servalsystems.co.uk http://www.servalsystems.co.uk
Tel: 01342 331940
Fax: 01342 331950