【发布时间】:2019-02-10 13:03:07
【问题描述】:
我在一些正则表达式查找/替换方面有点挣扎..
我想搜索一些术语,当它找到其中任何一个时,它会删除它们所在的行和下一行。 我要搜索的术语将包含引号和逗号。
这些是典型的搜索词(包括引号):
“文本二”,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|$)
替换为:-(留空)
当我执行“查找”和“计数”时,它正确显示了 86 个匹配项。如果我执行“替换”,它说它已经替换了 86 个匹配项——但实际上它已经删除了数千行。 使困惑… 你能帮忙吗?我需要一些额外的引号或转义字符吗?
【问题讨论】:
-
我认为这可能与贪婪有关。您是否尝试过“.matches newline”选项?这会影响结果吗?
-
您提供的输入对我来说效果很好。
标签: regex replace find notepad++