perlre
の拡張パターンページ では、\K
について読むことができます。
\K
の内容はそのままにして、$&に含めないでください
GNU grep
(実際には\K
の内容を正しく保持する)を使用した実用的な例を次に示します):
$ echo "foo bar buzz" | grep -Po "foo \Kbar buzz"
bar buzz
\K
の逆のシーケンスはありますか?
たとえば、次のようにbar
だけを印刷するには、
$ echo "foo bar buzz" | grep -Po "foo \Kbar\X buzz"
bar
この場合、 zero-width lookahead (?=...)
は必要なことを行います :
$ echo foo bar buzz | grep -Po "foo \Kbar(?= buzz)"
bar
いくつかの追加の括弧が必要です。 \K
とは異なり、先読みには1文字のエスケープはありません。
\K
は、これまでのすべてのことについて、実際には幅がゼロの後読みになっているため、これも次と同等です。
echo foo bar buzz | grep -Po "(?<=foo )bar(?= buzz)"
個人的にフォローする方が簡単だと思います。