Actions
Bug #17120
closedString#start_with? return wrong result for Regexp patterns containing /\K/
Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.8.0dev (2020-08-13T01:14:20Z master 69b5241c36) [x86_64-linux]
Description
String#start_with?
unexpectedly reports true when the pattern Regexp contains /\K/
(lookbehind) operator and the lookbehind pattern matches the beginning of self
.
"hello".start_with?(/h\Ke/) # => true (unexpected)
In this example, /h\Ke/
matches "hello", but it's not considered as a match at the beginning of the string by the other Regexp operations (e.g. $~.begin(0) == 1
).
Updated by hanazuki (Kasumi Hanazuki) almost 3 years ago
Updated by mame (Yusuke Endoh) 12 months ago
- Status changed from Open to Rejected
\K
changes the start position of the match string, but it does not change the match position itself. Actually, "hello" =~ /h\Ke/
returns 0. (Note that Regexp#=~
return the start position of the match.)
irb(main):001:0> "hello" =~ /h\Ke/
=> 0
irb(main):002:0> $~.begin(0)
=> 1
So I think this is by design.
Actions
Like0
Like0Like0