From: Aaron Patterson Date: 2007-04-28T07:09:21+09:00 Subject: Re: regexp help needed Hey Roy, On Sat, Apr 28, 2007 at 06:50:10AM +0900, rpardee@gmail.com wrote: > Hey All, > > I need to parse lines that look like this: > > > 1 'Not qualified' 2 'Overquota' 3 'Qualified'/ > 1 'SSI' 2 'Mall Facility'/ > 1 'Real Interview' 2 'Practice Interview'/ > > > So I've got N sets of <><><> on > each line. I want to grab each of the digits & labels, but I'm having > trouble w/the repetition stuff. Below is a simple script that doesn't > work--it grabs the first set, but seems to ignore the rest. > > str = "1 'Not qualified' 2 'Overquota' 3 'Qualified'" > rgx = /((\d+)\s+(\'[^']+?\'))+/i > m = rgx.match(str) > unless m.nil? > m.captures.each {|c| puts(c)} > end > > Can anybody throw me a regex clue here? You might want to try the scan method: str = "1 'Not qualified' 2 'Overquota' 3 'Qualified'" str.scan(/(\d+)\s+('[^']+')+/).each do |match| p match end Hope that helps! -- Aaron Patterson http://tenderlovemaking.com/