Actions
Bug #9457
closedRegexp: when using subexpression calls, returned match groups seem wrong
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
Description
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)
/(?<name>(Tarzan|Jane)) loves (\g<name>)/.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
Updated by dstosik (David Stosik) almost 11 years ago
"Subexpression calls":http://www.ruby-doc.org/core-2.0/Regexp.html#class-Regexp-label-Subexpression+Calls
Updated by akr (Akira Tanaka) almost 11 years ago
- 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")'
#<MatchData "Tarzan loves Jane" 1:"Tarzan" 2:"Jane" 3:"Jane">
% ruby -e 'p /(?<subj>(?<name>Tarzan|Jane)) loves (?<obj>\g<name>)/.match("Tarzan loves Jane")'
#<MatchData "Tarzan loves Jane" subj:"Tarzan" name:"Jane" obj:"Jane">
Actions
Like0
Like0Like1