Regular Expressions

Hi all I have a wee problem here

I have a variable that contains the contents of an entire file (actually a
visual basic bas file), I am currently building a doc tool in ruby to
document some systems

My problem is the regex is not matching all occurrences on a while loop, it
goes into a continious loop, im thinking it is resetting the starting
position on each match

Eg:

while content =~
/(Private|Public)?\s*(sub|function)\s*(.?)\s((.?))(.?)end\s+(sub|funct
ion)/mi

                                p "#$3\n"

end

content would be something like

private function mbGetStatus(Byref rlItems as long) as Boolean

end function

public function gbGetName(Byref rlId as long) as string

end function

any ideas ?

Cheers

Try using

content.scan(/(Private|Public)?\s*(sub|function)\s*(.?)\s((.*?))
do |match|
<do something with ‘match’>
end

The =~ operator WILL always start at the beginning.

Jason

— “Matthew, Graeme” Graeme.Matthew@mercer.com
wrote:

Hi all I have a wee problem here

I have a variable that contains the contents of an
entire file (actually a
visual basic bas file), I am currently building a
doc tool in ruby to
document some systems

My problem is the regex is not matching all
occurrences on a while loop, it
goes into a continious loop, im thinking it is
resetting the starting
position on each match

Eg:

while content =~

/(Private|Public)?\s*(sub|function)\s*(.?)\s((.?))(.?)end\s+(sub|funct

···

ion)/mi

                                p "#$3\n"

end

content would be something like

private function mbGetStatus(Byref rlItems as long)
as Boolean

end function

public function gbGetName(Byref rlId as long) as
string

end function

any ideas ?

Cheers