Issue #8001 has been updated by josh.cheek (Josh Cheek).


Also realized the regex here ends with \Z$, but can be shown with just \Z.

Here is an updated example:

ruby1.9 -v
  # >> ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0]
ruby2 -v
  # >> ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.2.0]

ruby1.9 -e 'p /x.*?\Z/ =~ "x\ny"'
  # >> nil
ruby2 -e 'p /x.*?\Z/ =~ "x\ny"'
  # >> 0
----------------------------------------
Bug #8001: 2.0 Regexp \Z matches where it shouldn't
https://bugs.ruby-lang.org/issues/8001#change-37252

Author: josh.cheek (Josh Cheek)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0]


(({for ruby in ~/.rbenv/versions/{1.9.3-p327,2.0.0-p0}/bin/ruby
do
  "$ruby" -v
  "$ruby" -e 'p /x.*?\Z$/ =~ "x\ny"'
done
}))

In Ruby 1.9: nil
In Ruby 2.0: 0

If you remove the "y" from the string, or add more, then they do the same thing.
The temporary solution I'm using to get around this is to replace `\Z` with `\n\z`



-- 
http://bugs.ruby-lang.org/