Keep pattern (3)

Keep patternの仕様について気になっていた点があったので、PCRE 7.2ではどうなっているのか調べてみた。

/()(a\Kb)/ =~ "ab"     # (1,2), (0,0), (0,2)
/(?=ab\K)ab/ =~ "ab"   # (0,2)
/(?<=\Ka)b/ =~ "ab"    # compile error

この結果から、PCREでの\Kは

  • captureには影響を与えない
  • look-forwardの中に書いても効果は無い
  • look-behindの中に書けない

となっているようだ。