matchdata

J

Jeremy Wells

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,588
Members
45,095
Latest member
EmiliaAlfo

Latest Threads

Top