Hey All,
I need to parse lines that look like this:
<lines>
1 'Not qualified' 2 'Overquota' 3 'Qualified'/
1 'SSI' 2 'Mall Facility'/
1 'Real Interview' 2 'Practice Interview'/
</lines>
So I've got N sets of <<digits>><<space>><<quote-delimited-label>> 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?
Thanks!
- Roy
Perhaps a little something like this:
str = "1 'Not qualified' 2 'Overquota' 3 'Qualified'"
rgx = /((\d+)\s+(\'[^']+?\'))+/i
m = str.scan(rgx)
m.each do |match|
puts match.first
end
Duane Johnson
(canadaduane)
···
On 4/27/07, rpardee@gmail.com <rpardee@gmail.com> wrote:
Hey All,
I need to parse lines that look like this:
<lines>
1 'Not qualified' 2 'Overquota' 3 'Qualified'/
1 'SSI' 2 'Mall Facility'/
1 'Real Interview' 2 'Practice Interview'/
</lines>
So I've got N sets of <<digits>><<space>><<quote-delimited-label>> 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?
Thanks!
- Roy
--
Duane Johnson
(canadaduane)
r = %r/(\d+)\s+('[^']*')/
s = "1 'Not qualified' 2 'Overquota' 3 'Qualified'"
s.scan(r) #=> [["1", "'Not qualified'"], ["2",
"'Overquota'"], ["3", "'Qualified'"]]
Blessings,
TwP
···
On 4/27/07, rpardee@gmail.com <rpardee@gmail.com> wrote:
Hey All,
I need to parse lines that look like this:
<lines>
1 'Not qualified' 2 'Overquota' 3 'Qualified'/
1 'SSI' 2 'Mall Facility'/
1 'Real Interview' 2 'Practice Interview'/
</lines>
So I've got N sets of <<digits>><<space>><<quote-delimited-label>> 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
Ah--that's the magic! Thanks guys!
-Roy
···
On Apr 27, 3:15 pm, "Tim Pease" <tim.pe...@gmail.com> wrote:
On 4/27/07, rpar...@gmail.com <rpar...@gmail.com> wrote:
> Hey All,
> I need to parse lines that look like this:
> <lines>
> 1 'Not qualified' 2 'Overquota' 3 'Qualified'/
> 1 'SSI' 2 'Mall Facility'/
> 1 'Real Interview' 2 'Practice Interview'/
> </lines>
> So I've got N sets of <<digits>><<space>><<quote-delimited-label>> 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
r = %r/(\d+)\s+('[^']*')/
s = "1 'Not qualified' 2 'Overquota' 3 'Qualified'"
s.scan(r) #=> [["1", "'Not qualified'"], ["2",
"'Overquota'"], ["3", "'Qualified'"]]
Blessings,
TwP