[ruby-core:96885] [Ruby master Bug#11014] String#partition doesn't return correct result on zero-width match
From:
akr@...
Date:
2020-01-16 05:31:37 UTC
List:
ruby-core #96885
Issue #11014 has been updated by akr (Akira Tanaka).
nobu (Nobuyoshi Nakada) wrote:
> These methods have been taken from Python, and seems same in Python.
> I'm not sure what's the rationale of this behavior.
I couldn't confirm it.
```
% python3
Python 3.7.3 (default, Apr 3 2019, 05:39:12)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> "abc".partition("")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: empty separator
>>>
```
The empty separator causes an error in Python.
----------------------------------------
Bug #11014: String#partition doesn't return correct result on zero-width match
https://bugs.ruby-lang.org/issues/11014#change-83897
* Author: janko (Janko Marohnić)
* Status: Assigned
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* Target version:
* 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/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>