[英]Regex find/replace multiple text in Notepad++
我在一些正則表達式查找/替換方面有點掙扎..
我想搜索一些術語,當它找到任何一個時,它會刪除它們所在的行和下一行。 我要搜索的術語中將包含引號和逗號。
這些是典型的搜索詞(包括引號):
“文字二”,BB
《文字三》,AA
《文字四》,AA
典型文件(將有 1000 行長)內容:
#text:0 first="blah" second="TEXT ONE",AA | more text
Line 1
#text:0 first="blah" second="TEXT TWO",BB | more text
Line 2
#text:0 first="blah" second="TEXT THREE",AA | more text
Line 3
#text:0 first="blah" second="TEXT FOUR",BB | more text
Line 4
#text:0 first="blah" second="TEXT THREE",AA | more text
Line 5
#text:0 first="blah" second="TEXT FOUR",AA | more text
Line 2
我希望結果是:
#text:0 first="blah" second="TEXT ONE",AA | more text
Line 1
#text:0 first="blah" second="TEXT FOUR",BB | more text
Line 4
即,包含上述 3 個術語中的任何一個的任何行都將被完全刪除 - 連同其下一行。
我嘗試了正則表達式搜索/替換:
找什么:-
.*"TEXT TWO",BB.*\R.*(?:\R|$)|.*"TEXT THREE",AA.*\R.*(?:\R|$)|.*"TEXT FOUR",AA.*\R.*(?:\R|$)
替換為:-(留空)
當我執行 'find' 和 'count' 時,它正確地顯示了 86 個匹配項。 如果我執行“替換”,它會說它已經替換了 86 個匹配項——但它實際上已經刪除了數千行。 困惑......你能幫忙嗎? 我需要一些額外的引號或轉義字符嗎?
正如評論中所說,不要檢查. matches newline
. matches newline
。
你也可以簡化一點:
^.*(?:”TEXT TWO”,BB|”TEXT THREE”,AA|”TEXT FOUR”,AA).*\R.*(?:\R|$)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.