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" INSIDE で終わるすべてのブロックを削除します。別の観点:「BEGIN」で始まり、「END」で終わり、「BOOL:TRUE」を含むすべてのブロックを保持したい。
これは最初の開始を取り、最初の bool:false を検索してから最後を検索します。それは正しくありません。(?s)( BEGIN.?BOOL:FALSE.?END )
フィルターを使用して欲しいもの
(?s)(BEGIN.*?BOOL\:FALSE.*?END)
BOOL:FALSE でフィルタ
(?s)(BEGIN.*?BOOL\:FALSE.*?END)[.FILTERBY_BOOL:FALSE