Ruby 4.0 リファレンスマニュアル

instance method StringScanner#fixed_anchor?

fixed_anchor? -> boolRuby 2.7.0 から[permalink][rdoc][edit]

self が fixed anchor モードで生成されていれば true を、そうでなければ false を返します。

fixed anchor モードは StringScanner.newfixed_anchor: true を指定すると有効になります。このモードでは、正規表現中の \A は現在のスキャンポインタの位置ではなく元の文字列の先頭にマッチするようになり、^ はスキャンポインタの位置に関係なく通常の行頭にマッチするようになります。

require 'strscan'

s1 = StringScanner.new('test')
p s1.fixed_anchor?                        # => false

s2 = StringScanner.new('test', fixed_anchor: true)
p s2.fixed_anchor?                        # => true
例: \A の挙動の違い
require 'strscan'

s1 = StringScanner.new("ab\ncd")
s1.scan(/a/)
p s1.scan(/\Ab/)                          # => "b"

s2 = StringScanner.new("ab\ncd", fixed_anchor: true)
s2.scan(/a/)
p s2.scan(/\Ab/)                          # => nil
例: ^ の挙動の違い
require 'strscan'

s1 = StringScanner.new("ab\ncd")
s1.scan(/a/)
p s1.scan(/^b/)                           # => "b"
s1.scan(/\n/)
p s1.scan(/^c/)                           # => "c"

s2 = StringScanner.new("ab\ncd", fixed_anchor: true)
s2.scan(/a/)
p s2.scan(/^b/)                           # => nil
s2.scan(/b\n/)
p s2.scan(/^c/)                           # => "c"

[SEE_ALSO] StringScanner.new