"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