From: akr@... Date: 2014-01-28T10:51:06+00:00 Subject: [ruby-core:60171] [ruby-trunk - Bug #9457] [Rejected] Regexp: when using subexpression calls, returned match groups seem wrong Issue #9457 has been updated by Akira Tanaka. Status changed from Open to Rejected I think it is not a bug. The subexpression, (Tarzan|Jane), matches twice: "Tarzan" and "Jane". So the last matched string, "Jane", is recorded in the match object. Consider following. % ruby -e 'p /((Tarzan|Jane)) loves (\g<2>)/.match("Tarzan loves Jane")' # % ruby -e 'p /(?(?Tarzan|Jane)) loves (?\g)/.match("Tarzan loves Jane")' # ---------------------------------------- Bug #9457: Regexp: when using subexpression calls, returned match groups seem wrong https://bugs.ruby-lang.org/issues/9457#change-44656 * Author: David Stosik * Status: Rejected * Priority: Normal * Assignee: * Category: regexp * Target version: * ruby -v: ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0] * Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- Hello, Here are a two examples: /(Tarzan|Jane) loves (\g<1>)/.match("Tarzan loves Jane").to_a #=> ["Tarzan loves Jane", "Jane", "Jane"] # Expected: ["Tarzan loves Jane", "Tarzan", "Jane"] (http://rubular.com/r/We2x4XNB2l) /(?(Tarzan|Jane)) loves (\g)/.match("Tarzan loves Jane").to_a #=> ["Tarzan loves Jane", "Jane"] # Expected: ["Tarzan loves Jane", "Tarzan", "Jane"] (http://rubular.com/r/1e3oevc1Yg) Unless I'm wrong on the results I'm expecting, I think this is a bug. Thanks for your help, David -- http://bugs.ruby-lang.org/