Backport #2508
The {n} repetition notation issue in Regexp
| Status: | Assigned | Start date: | 12/20/2009 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 100% |
||
| Category: | core | |||
| Target version: | - |
Description
There seems to be a bug in Ruby 1.9 regarding Regular Expression:
/(io){1}x/ =~ 'ioiox' # => 2 #fine
/(io){2}x/ =~ 'ioiox' # => nil #should be 0
/(io){2,2}x/ =~ 'ioiox'# => nil #should be 0
#below are correct
/(?:io){2}x/ =~ 'ioiox' # => 0
/(io){2}/ =~ 'ioiox' # => 0
/(io){2,}x/ =~ 'ioiox' # => 0
/(io){,2}x/ =~ 'ioiox' # => 0
Associated revisions
* regcomp.c (optimize_node_left): include equal on the condition of for-loop.
This bug also affects original Oniguruma. [ruby-core:27247]
History
Updated by dblack (David Black) over 2 years ago
Hi --
On Sun, 20 Dec 2009, katz bo wrote:
> Bug #2508: The {n} repetition notation issue in Regexp
> http://redmine.ruby-lang.org/issues/show/2508
>
> Author: katz bo
> Status: Open, Priority: Normal
> Category: core
> ruby -v: ruby 1.9.1p376 (2009-12-07 revision 26041) [i686-linux]
>
> There seems to be a bug in Ruby 1.9 regarding Regular Expression:
>
> /(io){1}x/ =~ 'ioiox' # => 2 #fine
> /(io){2}x/ =~ 'ioiox' # => nil #should be 0
> /(io){2,2}x/ =~ 'ioiox'# => nil #should be 0
> #below are correct
> /(?:io){2}x/ =~ 'ioiox' # => 0
> /(io){2}/ =~ 'ioiox' # => 0
> /(io){2,}x/ =~ 'ioiox' # => 0
> /(io){,2}x/ =~ 'ioiox' # => 0
I would call this a severe bug.
David
--
David A. Black
Senior Developer, Cyrus Innovation Inc.
THE COMPLEAT RUBYIST, Ruby training with Black/Brown/McAnally!
January 22-23, Tampa, Florida
Info and registration at http://www.thecompleatrubyist.com
Updated by naruse (Yui NARUSE) over 2 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r26143. katz, thank you for reporting this issue. Your contribution to Ruby is greatly appreciated. May Ruby be with you.
Updated by naruse (Yui NARUSE) over 2 years ago
- Category set to core
- Status changed from Closed to Assigned
- Assignee set to shyouhei (Shyouhei Urabe)
Updated by naruse (Yui NARUSE) over 2 years ago
- Assignee changed from shyouhei (Shyouhei Urabe) to yugui (Yuki Sonoda)