正则表达式使用grep尽可能多地匹配(懒惰)

时间:2015-08-04 11:03:56

标签: regex shell command-line terminal grep

我对正则表达式很陌生。我在txt文件中有以下简单的行。

This one has some different PATTERNs, including PTTRN, and PTN, then it repeats PTTRN and PATTERN

使用grep -E,我希望匹配第一个PATTERN和第一个PTTRN之间的所有内容,而不将匹配扩展到第二个PTTRN。

我试过

PATTERN.*?PTTRN

这似乎适用于https://regex101.com/r/qI4aA6/8

但是当我尝试在带有grep的终端中使用它时,它一直颜色到第二个PTTRN,即

PATTERNs, including PTTRN, and PTN, then it repeats PTTRN

此外,我在我的ubuntu系统上使用默认的grep(gnu grep)。

1 个答案:

答案 0 :(得分:1)

您可以将-P(PCRE)标志与gnu-grep:

一起使用
grep -oP 'PATTERN.*?PTTRN' file
PATTERNs, including PTTRN

或者在BSD上grep

grep -oE 'PATTERN.*?PTTRN' file
PATTERNs, including PTTRN