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

[snip]

What I want:
[MatchData,MatchData,MatchData]

something like this

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

···

On 11/23/06, Jeremy Wells <jwells@servalsystems.co.uk> wrote:

--
Simon Strandgaard

thanks, that worked great

Simon Strandgaard wrote:

···

On 11/23/06, Jeremy Wells <jwells@servalsystems.co.uk> wrote:
[snip]

What I want:
[MatchData,MatchData,MatchData]

something like this

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

--

Simon Strandgaard

--

*Jeremy Wells*
Serval Systems Ltd.

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