Issue #13621 has been updated by nobu (Nobuyoshi Nakada).

Status changed from Open to Assigned
Assignee set to stomar (Marcus Stollsteimer)

A documentation issue.
the `limit` limits only split fields, not separators.

----------------------------------------
Bug #13621: String#split returns an array longer than given limit, when passing a regexp with groups
https://bugs.ruby-lang.org/issues/13621#change-65215

* Author: cichol (cichol tsai)
* Status: Assigned
* Priority: Normal
* Assignee: stomar (Marcus Stollsteimer)
* Target version: 
* ruby -v: 
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
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:

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

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



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>