Backport #2508

The {n} repetition notation issue in Regexp

Added by katz (katz bo) over 2 years ago. Updated about 1 year ago.

[ruby-core:27247]
Status:Assigned Start date:12/20/2009
Priority:Normal Due date:
Assignee:yugui (Yuki Sonoda) % 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

Revision 26143
Added by naruse (Yui NARUSE) over 2 years ago

* 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)

Also available in: Atom PDF