regex - 正则表达式在记事本++中查找/替换多个文本
问题描述
我在一些正则表达式查找/替换方面有点挣扎..
我想搜索一些术语,当它找到其中任何一个时,它会删除它们所在的行和下一行。我要搜索的术语将包含引号和逗号。
这些是典型的搜索词(包括引号):
“文本二”,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
即包含上述三个术语中的任何一个的任何行都将被完全删除 - 以及它的下一行。
我尝试了正则表达式搜索/替换:
找什么:-
.*"TEXT TWO",BB.*\R.*(?:\R|$)|.*"TEXT THREE",AA.*\R.*(?:\R|$)|.*"TEXT FOUR",AA.*\R.*(?:\R|$)
替换为:-(留空)
当我执行 'find' 和 'count' 时,它正确显示 86 个匹配项。如果我执行“替换”,它说它已经替换了 86 个匹配项——但实际上它已经删除了数千行。困惑......你能帮忙吗?我需要一些额外的引号或转义字符吗?
解决方案
正如评论中所说,不要检查. matches newline
.
你也可以简化一点:
^.*(?:”TEXT TWO”,BB|”TEXT THREE”,AA|”TEXT FOUR”,AA).*\R.*(?:\R|$)
推荐阅读
- java - 使用嵌套在 Object 中的 Object 生成 JSON 数据
- ruby-on-rails - 为什么 Spree 没有渲染我更改的模板?
- python - 为 subprocess.Popen 手动处理标准输入
- python - /customer/1/ 'customer' 对象的 AttributeError 没有属性 'order_set'
- java - 如何在Android Studio(JAVA)中将int表达式(来自drawabale)转换为String表达式
- python - 如何从字典中创建一个新列,其值是集合的键?
- java - 使用 postForObject 方法发布 JSON 后,我收到“415 Unsupported Media Type”错误
- python - 初始化异常:Java 网关进程在发送其端口号之前已退出
- java - 如何从 JWT 获取用户名?
- sql - 如何在 SQL/BigQuery 中消耗每日预算但不超过总预算