ken*_*orb 8 grep perl regular-expression
在perlre
的扩展模式页面上,我们可以阅读\K
:
保留 的左侧的内容
\K
,不要将其包含在 $& 中
这是使用 GNU 的实际示例grep
(实际上保留了 的内容\K
):
$ echo "foo bar buzz" | grep -Po "foo \Kbar buzz"
bar buzz
Run Code Online (Sandbox Code Playgroud)
有相反的顺序\K
吗?
例如打印 just bar
,如:
$ echo "foo bar buzz" | grep -Po "foo \Kbar\X buzz"
bar
Run Code Online (Sandbox Code Playgroud)
Mic*_*mer 15
在这种情况下,零宽度前瞻(?=...)
做你想要的:
$ echo foo bar buzz | grep -Po "foo \Kbar(?= buzz)"
bar
Run Code Online (Sandbox Code Playgroud)
它确实需要一些额外的括号。前瞻没有单字符转义,就像 for 那样\K
。
\K
到目前为止,它实际上只是一个零宽度的后视,所以这也相当于
echo foo bar buzz | grep -Po "(?<=foo )bar(?= buzz)"
Run Code Online (Sandbox Code Playgroud)
我觉得个人更容易遵循。