James Edward Gray II schrieb:
> I keep running into some surprising points with Ruby's Regexp engine  
> today and this first one just looks plain wrong to me:
> 
> irb(main):001:0> html = "<p>one</p>\n\n<p>two</p>"
> => "<p>one</p>\n\n<p>two</p>"
> irb(main):002:0> html.sub!(/<p>(.*?)<\/p>(.*)/) { $1.strip }
> => "one\n\n<p>two</p>"
> irb(main):003:0> $2
> => ""
> 
> Can anyone explain to me how that isn't a bug?
> 
> Here's another surprise, for me:
> 
> irb(main):001:0> html = "<p>one</p>\n\n<p>two</p>"
> => "<p>one</p>\n\n<p>two</p>"
> irb(main):002:0> html.sub!(/<p>(.*?)<\/p>(.*)\Z/) { $1.strip }
> => "<p>one</p>\n\ntwo"
> 
> Using an anchor there means that the left-most match doesn't win?

James, what did you expect? Both examples look perfectly valid to me.

Regards,
Pit