From: "josh.cheek (Josh Cheek)" Date: 2013-03-02T21:22:04+09:00 Subject: [ruby-core:53105] [ruby-trunk - Bug #8001] 2.0 Regexp \Z matches where it shouldn't 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/