我对正则表达式很陌生。我在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)。
答案 0 :(得分:1)
您可以将-P
(PCRE)标志与gnu-grep:
grep -oP 'PATTERN.*?PTTRN' file
PATTERNs, including PTTRN
或者在BSD上grep
:
grep -oE 'PATTERN.*?PTTRN' file
PATTERNs, including PTTRN