Keep pattern (4)

前回はPCRE 7.2での仕様を調べたが、今回はperl 5.9.5。

/()(a\Kb)/ =~ "ab"     # $& = "b", $1 = "", $2 = "ab"
/(?=ab\K)ab/ =~ "ab"   # $& = ""
/(?<=\Ka)b/ =~ "ab"    # $& = "ab"

この結果から、perlの\Kは

  • captureには影響を与えない
  • look-forwardとlook-behindの中に書いた場合も効果がある

PCREとは少し違っている。

当たり前だが、否定の中に書いた場合には効果がなかった。

/(?<!\Kc)b/ =~ "ab"   # $& = "b"