From: Alan Johnson Date: 2008-11-19T09:37:30+09:00 Subject: Re: ruby global regex question. ------=_Part_20500_9955169.1227055268216 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Tue, Nov 18, 2008 at 4:06 PM, knohr wrote: > For the life of me, i can't figure out a ruby equivalent to perl's /g > > basically, i want to do the following > > > while htmlSource=~m/(.*?)<\table>/g do > tableSource=$1 > tableSource=~m/Index (\d+)/ > indexNumber=$1 > > while tableSource=~m/(.*?)<\/tr>/g do > tableRowSource=$1 > doSomethingWith(tableRowSource, indexNumber) > end#while tableSource > > end#while htmlSource > > > I will actually need to pull multiple vars, not just a single one, > from the regex > I will need to do the outer loop an unknown amount of times per > document (0-20) and i will need to loop the inner an unknown amount of > times (0-29) > > > Thread safe would be a plus. > > > any suggestions? > > I think this does what you want, although I don't think gsub was really made for this purpose. def doSomethingWith(s) print s, "\n" end htmlSource = '
1,11,2
' htmlSource << '2,11,2
' htmlSource.gsub(/(.*?)<\/table>/) do |t| tableRowSource = $1 tableRowSource.gsub(/(.*?)<\/tr>/) do |r| doSomethingWith $1 end end -- Alan ------=_Part_20500_9955169.1227055268216--