我使用 pcregrep 编写了一个正则表达式,一切都按预期运行,直到我添加了一个积极的前瞻。
设想:
我有以下文本文件:
a
b
c
a
c
目标:
我想使用带有 pcregrep 的正则表达式来返回一个包含的行a
和一个包含的行,其中包含c
一个未捕获的行。所以它会捕获前三行 ( , , ) 并返回第一 ( ) 和第三 ( ) 行。它不会捕获第四行和第五行,因为它们之间没有线。所以输出将是:b
a
b
c
a
c
b
a
c
我试过的
如果我运行pcregrep -M 'a\nb\nc\n'
(命令 1),这将捕获并返回:
a
b
c
正如预期的那样。所以我现在想修改它以捕获b
具有积极前瞻的行。我试过这个:(pcregrep -M 'a\n(?=(b\n))c\n'
命令2)。但是,这不会返回任何内容。
我的问题:
为什么命令 2不返回预期的输出,而命令 1呢?如何返回所需的结果?我知道除了 之外还有其他方法可以做到这一点pcregrep
,但请注意我想使用它,pcregrep
因为我将扩展功能以解决类似问题。
谢谢!