From: "vlazar (Vlad Zarakovsky)" Date: 2022-01-11T08:14:54+00:00 Subject: [ruby-core:107045] [Ruby master Bug#18471] Regex#match(re, position) with start of a string anchors ^ and \A Issue #18471 has been reported by vlazar (Vlad Zarakovsky). ---------------------------------------- Bug #18471: Regex#match(re, position) with start of a string anchors ^ and \A https://bugs.ruby-lang.org/issues/18471 * Author: vlazar (Vlad Zarakovsky) * Status: Open * Priority: Normal * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- Found this. Is it a bug in `Regex#match(re, position)`? From `Regex#match` docs > If the second parameter is present, it specifies the position in the string to begin the search. ```rb str = "hello world" /^world/.match(str, 6) # => nil /\Aworld/.match(str, 6) # => nil ``` I would expect ���specifies the position in the string to begin the search��� would mean staring from position 6 in ���hello world��� should be equivalent to staring with position 0 in a string ���world��� and thus ^ or \A should match in this case too. Consider another example. If I use the same with `StringScanner#scan` it works as I would expect: ```rb require "strscan" str = "hello world" scanner = StringScanner.new(str) scanner.pos = 6 scanner.scan /^world/ # => "world" scanner.pos = 6 scanner.scan /\Aworld/ # => "world" ``` To me these 2 cases (at least looking into current API docs) should work the same and having a difference in behavior looks like a bug to me. -- https://bugs.ruby-lang.org/ Unsubscribe: