"Robert Klemme" <bob.news / gmx.net> wrote in message news:<2hrtj4Fg77irU1 / uni-berlin.de>...
> "Paul" <paul.rogers / shaw.ca> schrieb im Newsbeitrag
> news:4ee21163.0405281638.45d95197 / posting.google.com...
> > How do I extract the name and value from the following lines:
> >
> > name=paul value=10 otherstuff=123
> >
> > but the line may also be:
> > name='hello paul' value='10' otherstuff='123'
> >
> > I know it has to do with \0 \1 etc, but cant figure out how to make
> > the re work for both cases
> >
> > Thanks
> 
> You could do:
> 
> lines = <<'EOF'
> name=paul value=10 otherstuff=123
> name='hello paul' value='10' otherstuff='123'
> name='hello paul, it\'s nice here' value='10' otherstuff='123'
> name='hello paul, don't do that' value='10' otherstuff='123'
> EOF
> 
> lines.scan( %r{
>   (name|value|otherstuff)
>   =
>   (?: '((?:[^'\\]|\\')*)' | (\S+) )
> }x ) do |m|
>   key = m[0]
>   val = (m[1]||m[2]).gsub(/\\(.)/, '\\1')
>   puts "key=#{key}"
>   puts "value='#{val}'"
> end
> 
> $ ./sc.rb
> key=name
> value='paul'
> key=value
> value='10'
> key=otherstuff
> value='123'
> key=name
> value='hello paul'
> key=value
> value='10'
> key=otherstuff
> value='123'
> key=name
> value='hello paul, it's nice here'
> key=value
> value='10'
> key=otherstuff
> value='123'
> key=name
> value='hello paul, don'
> key=value
> value='10'
> key=otherstuff
> value='123'
> 
> Of course you can replicate the expression to cover all three x=y pairs.
> 
> Regards
> 
>     robert

Thanks guy this is great. 

Where would I find Regexp::English ? is it a module in the RAA?

Thanks

Paul