You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Notepad++正则表达式:查找符合条件的多行内容组

用Notepad++正则匹配多行abr:rules组的解决方案

没问题,我经常用Notepad++处理这种XML片段的多行匹配,给你一步步来:

1. 基础匹配:捕获所有abr:rules组

如果你只是想匹配每一个完整的abr:rules块(从<abr:rules>开始到</abr:rules>结束),用这个正则:

(?s)<abr:rules>.*?</abr:rules>
  • (?s):开启「单行模式」,让.能匹配换行符(默认.不匹配换行)
  • .*?:非贪婪匹配,确保只匹配到当前块的</abr:rules>,不会从第一个<abr:rules>直接跳到最后一个结束标签

2. 精准匹配:按条件筛选特定组

如果要匹配满足特定条件的组(比如code是ABB,或者subapplication是FM),可以调整正则:

示例1:匹配code为ABB的组

(?s)<abr:rules>(?:(?!</abr:rules>).)*<abr:code>ABB</abr:code>(?:(?!</abr:rules>).)*</abr:rules>

示例2:匹配subapplication为FM的组

(?s)<abr:rules>(?:(?!</abr:rules>).)*subapplication="FM"(?:(?!</abr:rules>).)*</abr:rules>
  • (?:(?!</abr:rules>).)*:这部分是核心,意思是「匹配任意字符,直到遇到</abr:rules>就停止」,用来限制匹配范围在当前rules块内,不会跨块匹配

3. Notepad++操作步骤

  1. 把你的XML内容粘贴到Notepad++里
  2. 按Ctrl+F打开查找对话框
  3. 切换到「正则表达式」模式(记得不要勾选「.匹配换行符」,因为我们已经用(?s)在正则里开启了,重复开启会冲突)
  4. 输入上面的正则,点击「查找下一个」定位单个匹配,或者「查找全部」列出所有符合条件的块

如果你的Notepad++版本比较旧,可能需要把(?s)换成勾选「.匹配换行符」选项,效果是一样的。

内容的提问来源于stack exchange,提问作者farbiondriven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:32:51