Issue #11014 has been updated by Nobuyoshi Nakada. Description updated Status changed from Open to Assigned Assignee set to Yukihiro Matsumoto These methods have been taken from Python, and seems same in Python. I'm not sure what's the rationale of this behavior. ---------------------------------------- Bug #11014: String#partition doesn't return correct result on zero-width match https://bugs.ruby-lang.org/issues/11014#change-52193 * Author: Janko Marohni * Status: Assigned * Priority: Normal * Assignee: Yukihiro Matsumoto * ruby -v: ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- First, to see how `String#match` works on my example: ~~~ruby match = "foo".match(/^=*/) match.pre_match #=> "" match[0] #=> "" match.post_match #=> "foo" ~~~ Now, if I used `String#partition` instead of `match`, I'd expect to get `["", "", "foo"]` (pre_match, match, post_match). However ~~~ruby "foo".partition(/^=*/) #=> ["foo", "", ""] ~~~ `String#rpartition` returns the correct result (with the same regex). -- https://bugs.ruby-lang.org/