Project

General

Profile

Actions

Bug #13621

closed

String#split returns an array longer than given limit, when passing a regexp with groups

Added by cichol (Renxiang Cai) over 7 years ago. Updated over 7 years ago.

Status:
Closed
Target version:
-
[ruby-core:81505]

Description

The String#split documentation(http://ruby-doc.org/core-2.4.1/String.html#method-i-split) described:

If pattern is a Regexp, str is divided where the pattern matches. Whenever the pattern matches a zero-length string, str is split into individual characters. If pattern contains groups, the respective matches will be returned in the array as well.

If limit is a positive number, at most that number of fields will be returned (if limit is 1, the entire string is returned as the only entry in an array).

However giving a regexp with groups, split can return fields more than a given limit:

'aBa'.split(/(B)()()/, 2) # => ["a", "B", "", "", "a"]

Shouldn't it be ["a", "B"] ?

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0