将 pcregrep 与 --color 选项一起使用 - 仅突出显示未捕获的表达式?

Using pcregrep with --color option - only highlight non captured expression?

我想使用 pcregrep 及其 --color 选项来突出显示遵循特定模式的文本:

例如如果 file.txt 包含:

bob says hi
chloe says hello

然后 运行:

pcregrep --color '(?:says)(.*)' file.txt

打印

bob 打招呼
克洛伊 打招呼

但我想要的是:

鲍勃说
克洛伊说 你好

有没有办法使用 pcregrep 并让它只突出显示遵循特定正则表达式的文本?

答案似乎是否定的,你不能只对匹配项的一部分着色,即使它不是用 (?:..) 捕获的,就像你的例子一样。

但是,如果您改为使用肯定的后视断言,它锚定匹配但不是匹配的一部分,则可以实现您想要的结果:

pcregrep --color '(?<=says)(.*)' data

结果: