I'm trying to match these kinds of malformatted xml tags. I'm beginning
to question my sanity, so i'm posting here.

Example Strings:
=====
A=" <orderMsg biz=0>"
B=" <orderMsg type=7 size=0>"
C=" <orderMsg type=7 size=0 biz=1>"
=====


I've come up with this regex:
=====
/<(\w+?)(?:\s(\w+)=(\w+))+>/
=====


But when matching string B from above:
=====
md=/<(\w+?)(?:\s(\w+)=(\w+))+>/.match(B)
=====


It will do this:
======
md[0]=<orderMsg type=7 size=0>
md[1]=orderMsg
md[2]=size
md[3]=0
nil
nil
nil
nil
=======


Why isn't the final + sign making the pattern "(?:\s(\w+)=(\w+))"
repeat?

As an exercise... /<(\w+?)(?:\s(\w+)=(\w+))(?:\s(\w+)=(\w+))>/ DOES
match String B from above. What the heck???

-- 
Posted via http://www.ruby-forum.com/.