簡體   English   中英

正則表達式在記事本++中查找/替換多個文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM