Project

General

Profile

Actions

Backport #7974

closed

Case-insensitive group doesn't work in 2.0.0-p0

Added by ged (Michael Granger) about 11 years ago. Updated about 11 years ago.


Description

=begin

A match group marked as case-insensitive (({(?i:...)})) fails to match if it occurs before a case-sensitive portion of the regex.

Given the script:

-- syntax: ruby --

#encoding: utf-8

Doesn't match in Ruby 2.0, but does in 1.9.3

p(/(?i:a) B/ =~ "A B")
p(/(?i:a) B/ =~ "a B")

Matches in both versions

p(/(?i:a) B/i =~ "a b")
p(/(?i:a B)/ =~ "a B")
p(/(?i:a b)/ =~ "a B")
p(/B (?i:a)/ =~ "B A")
p(/B (?i:a)/ =~ "B a")

All cases match in Ruby 1.9.3p392:

$ ruby -v ~/temp/re_group_i.rb
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.2.1]
0
0
0
0
0
0
0

but the first two don't match under Ruby 2.0.0p0:

$ ruby -v ~/temp/re_group_i.rb
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.2.1]
nil
nil
0
0
0
0
0

I expected both versions to implement case-insensitive groups the same way.

=end


Files

re_group_i.rb (211 Bytes) re_group_i.rb Minimal test case ged (Michael Granger), 02/27/2013 08:03 AM
re_group_i.rb (285 Bytes) re_group_i.rb Minimal test case ged (Michael Granger), 02/27/2013 08:24 AM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0