正则表达式:匹配从A开始直到但不包括B的所有内容

时间:2018-03-26 22:05:07

标签: regex notepad++

我有一个输入类似于此的文件:

CQUAD4 123123 123 234
CQUAD4 123123 123 234
CQUAD4 123123 123 234
PCOMP 123 123 123 123
123 123 123 123 123
123 123 1231 23
CQUAD4 123123 123 234
CQUAD4 123123 123 234
CQUAD4 123123 123 234
CQUAD4 123123 123 234
CQUAD4 123123 123 234
PCOMP 123 123 123 123
123 123 123 123 123
123 123 1231 23
432 234 2342 34
CQUAD4 123123 123 234
CQUAD4 123123 123 234
CQUAD4 123123 123 234
CQUAD4 123123 123 234

我想抓拍

PCOMP 123 123 123 123
123 123 123 123 123
123 123 1231 23

PCOMP 123 123 123 123
123 123 123 123 123
123 123 1231 23
432 234 2342 34

我目前有PCOMP((.|\n)*)CQUAD4,但它会捕获所有内容,包括中间的CQUAD4块。我应该使用什么来匹配从PCOMP开始直到CQUAD4的下一个实例之前的字符?提前谢谢。

2 个答案:

答案 0 :(得分:3)

你可能会相处

PCOMP[\s\S]*?(?=CQUAD)

请参阅a demo on regex101.com (.|\n)是你能想到的最低效的模式之一,真的。

答案 1 :(得分:0)

使用*?量词来懒惰地匹配内部部分:

PCOMP((.|\n)*?)CQUAD4

默认情况下,*是贪婪的,并且会找到最大的匹配。