我想删除从 X 开始的每个块,以 Y 结束并包含值 Z
文本:
BEGIN
DESCRIPTION: 1234
BOOL:TRUE
END
BEGIN
DESCRIPTION: 4568
BOOL:TRUE
END
BEGIN
DESCRIPTION: 715310
BOOL:FALSE
END
BEGIN
DESCRIPTION: 12489453
BOOL:TRUE
END
BEGIN
DESCRIPTION: 41543
BOOL:FALSE
END
结果 :
BEGIN
DESCRIPTION: 1234
BOOL:TRUE
END
BEGIN
DESCRIPTION: 4568
BOOL:TRUE
END
BEGIN
DESCRIPTION: 12489453
BOOL:TRUE
END
在这里,我们要删除以“BEGIN”开始、以“END”结束、内部带有“BOOL:FALSE”的每个块。另一种观点:我想保持每个集团都以“BEGIN”开始,以“END”结束,里面有“BOOL:TRUE”。
这个取第一个开始并在搜索结束之前搜索第一个 bool:false。那是不对的。(?s)(开始。?BOOL:FALSE。 ?END)
我想要什么就像使用过滤器一样
(?s)(BEGIN.*?BOOL\:FALSE.*?END)
按 BOOL:FALSE 过滤
(?s)(BEGIN.*?BOOL\:FALSE.*?END)[.FILTERBY_BOOL:FALSE