Regex 记事本++;搜索并替换多个文本行
我在很多不同的规则中都有数千个这样的规则Regex 记事本++;搜索并替换多个文本行,regex,notepad++,Regex,Notepad++,我在很多不同的规则中都有数千个这样的规则 edit 1698 set src-address "172.29.44.51/32" set dst-address "172.29.44.67/32" set service "tcp-1022" set service "tcp-1023" set service "tcp-1090" set service "tcp-1098-1102" set service "tcp-115" set service "tcp-123"
edit 1698
set src-address "172.29.44.51/32"
set dst-address "172.29.44.67/32"
set service "tcp-1022"
set service "tcp-1023"
set service "tcp-1090"
set service "tcp-1098-1102"
set service "tcp-115"
set service "tcp-123"
set service "tcp-13000"
set service "tcp-13001"
set service "tcp-14000"
set service "tcp-14001"
set service "tcp-15000"
set service "tcp-16000"
set service "tcp-1812"
set service "tcp-22"
set service "tcp-32770-32900"
set service "tcp-3307"
set service "tcp-3528"
set service "tcp-3600"
set service "tcp-4400-4500"
set service "tcp-4712-4715"
set service "tcp-5000"
set service "tcp-5000-5630"
set service "tcp-50023-50030"
set service "tcp-5632-7000"
set service "tcp-636"
set service "tcp-7500"
set service "tcp-7600"
set service "tcp-7650"
set service "tcp-7651"
set service "tcp-7900"
set service "tcp-8009"
set service "tcp-8093"
set service "tcp-8443"
set service "tcp-9000"
set service "tcp-9001"
set service "udp-1023"
set service "udp-1102"
set service "udp-123"
set service "udp-13001"
set service "udp-14000"
set service "udp-14000-14001"
set service "udp-161"
set service "udp-162"
set service "udp-177"
set service "udp-22"
set service "udp-389"
set service "udp-45600-45800"
set service "udp-5900"
set service "udp-7500"
set service "udp-8443"
set service "udp-9001"
set service "udp-920-940"
exit
我希望它将所有设置的服务行收集到一行中,就像这个示例一样
set service "PING" "tcp-1022" "tcp-1023" "tcp-1090" "tcp-1098-1102" "tcp-115" "tcp-123" "tcp-13000" "tcp-13001" "tcp-14000" "tcp-14001" "tcp-15000" "tcp-16000" "tcp-1812" "tcp-22" "tcp-32770-32900" "tcp-3307" "tcp-3528" "tcp-3600" "tcp-4400-4500" "tcp-4712-4715" "tcp-5000" "tcp-5000-5630" "tcp-50023-50030" "tcp-5632-7000" "tcp-636" "tcp-7500" "tcp-7600" "tcp-7650" "tcp-7651" "tcp-7900" "tcp-8009" "tcp-8093" "tcp-8443" "tcp-9000" "tcp-9001" "udp-1023" "udp-1102" "udp-123" "udp-13001" "udp-14000" "udp-14000-14001" "udp-161" "udp-162" "udp-177" "udp-22" "udp-389" "udp-45600-45800" "udp-5900" "udp-7500" "udp-8443" "udp-9001" "udp-920-940"
这是一个仅适用于记事本++的解决方案。它使用宏,因为您说您有许多不同的规则文件
- 按Ctrl-Pos1键,转到当前文件的开头
- 搜索->替换…:
查找内容:^(?!设置服务)。+?\r\n设置服务
替换为:
选中左下角的正则表达式\1第一套服务\3
- 按全部替换
- 按Ctrl-Pos1键,转到当前文件的开头
- 搜索->替换…:
查找内容:\r\n设置服务
替换为:`(无) 选中左下角的扩展 - 按全部替换
- 按Ctrl-Pos1键,转到当前文件的开头
- 搜索->替换…:
查找内容:^第一套服务
替换为:
选中左下角的正则表达式设置服务
- 按全部替换
- 查找表达式中的
\r\n
- Dos\Windows作为状态栏中的行尾类型
- 正则表达式在左下角被选中
- 与文件区域中的搜索匹配的区域
我尝试过,但单击“全部替换”后,它会显示“全部替换:0发生被替换”,这意味着搜索不起作用。请确保已选中“替换”对话框左下角的“扩展”。确保\r\n与Dos\Windows lineendings匹配。如果您使用的是Unix lineendings,请在搜索中将\r\n替换为\n。Notepad++在右侧的状态栏中显示了行尾的类型。在上面的注释中,您指出每个文件有许多设置服务块。这意味着每个文件运行一个宏的答案将不起作用。我将尝试使用正则表达式。我更改了指令以处理每个文件的几个块。当我尝试第一步时,结果仍然是相同的“全部替换:0次出现被替换”-我正在使用带记事本的windows++