From: nobu@... Date: 2017-06-01T14:53:41+00:00 Subject: [ruby-core:81508] [Ruby trunk Bug#13621][Assigned] String#split returns an array longer than given limit, when passing a regexp with groups 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: