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/