Grep
在 K 的對面,保持內容正確
在
perlre
的擴展模式頁面上,我們可以閱讀\K
:保留剩下的東西
\K
,不要包含在 $&這是使用 GNU 的實際範例
grep
(實際上保留了 GNU 的內容\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
在這種情況下,零寬度前瞻可以滿足
(?=...)
您的要求:$ echo foo bar buzz | grep -Po "foo \Kbar(?= buzz)" bar
它確實需要一些額外的括號。沒有像
\K
.
\K
到目前為止,實際上只是對所有內容的零寬度回顧,所以這也相當於echo foo bar buzz | grep -Po "(?<=foo )bar(?= buzz)"
我個人覺得更容易理解。