Project

General

Profile

Actions

Bug #13716

closed

Unexpected or undocumented (or maybe both) behaviour when mixing String#scan with named captures

Added by shyouhei (Shyouhei Urabe) almost 7 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.0dev (2017-06-22 trunk 59146) [x86_64-darwin15]
[ruby-core:81913]

Description

Is this intentional?

[1] pry(main)> "1q2w3e4r".scan(/(\w\d)(foo){0}/)
=> [["q2", nil], ["w3", nil], ["e4", nil]]
[2] pry(main)> "1q2w3e4r".scan(/(\w\d)(?<foo>foo){0}/)
=> [[nil], [nil], [nil]]

The only difference is the capture being named.

Updated by akr (Akira Tanaka) over 6 years ago

  • Status changed from Open to Feedback

When you use a named capture, parenthesises are not considered as a capture.

So, you need to add name for all captures as:

% ruby -e 'p "1q2w3e4r".scan(/(?<bar>\w\d)(?<foo>foo){0}/)'
[["q2", nil], ["w3", nil], ["e4", nil]]

Updated by shyouhei (Shyouhei Urabe) over 6 years ago

  • Status changed from Feedback to Open

akr (Akira Tanaka) wrote:

When you use a named capture, parenthesises are not considered as a capture.

Where can I learn that restriction? I have never heard of such thing before.

Actions #3

Updated by jeremyevans (Jeremy Evans) over 4 years ago

  • Status changed from Open to Closed

Applied in changeset git|bd3283338250827e0f9e2fd1785bd1fd4151e66d.


Document behavior when mixing named captures with parentheses [ci skip]

Fixes [Bug #13716]

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0