regex - 用于匹配多个目标搜索的正则表达式
问题描述
我正在使用最新最好的 Notepad++。我有 1,500 个 XML 文件。我的目标是按组组织所有 1,500 个 XML 文件。有人可以帮我开发一个 RegX,它可以让我在所有 1,500 个 XML 文件中搜索多个 XML 标记类型。
因此,例如,我希望 Notepad++ 搜索我在这两个 XML 标记中嵌入了多少 XML 文件: <tag1>
& <tag2>
。我遇到的问题是它只能通过针对单个标签来工作。我想通过能够搜索 2、3 或 4 个标签来加强它,这将帮助我将所有 1,500 个 XML 文件分组到不同的类别下。
解决方案
您可以做很多事情来查找特定的标签、属性和值。
对于您的特定情况,要查找多个已知标签并匹配标签结构 的其余部分,只需这样做:
<(tag1|tag2)(?!\w)(?:"[\S\s]*?"|'[\S\s]*?'|[^>]*?)+>
# Open or self contained tags
<
( tag1 | tag2 ) # (1), Add tags here
(?! \w )
(?: " [\S\s]*? " | ' [\S\s]*? ' | [^>]*? )+
>
但是,如果您想跟踪任何具有该名称的标签,您也需要
跟踪结束标签。
您可以将 open、close 和 self-contained 与此正则表达式结合起来:
<(?:((?&tag_names))(?!\w)(?:"[\S\s]*?"|'[\S\s]*?'|[^>]*?)+|\/((?&tag_names))\s*)>(?(DEFINE)(?<tag_names>tag1|tag2))
https://regex101.com/r/QdZL6B/1
并且,您可以根据匹配的组来区分它是哪一个。
展开
<
(?:
( (?&tag_names) ) # (1), Open or self contained tags
(?! \w )
(?: " [\S\s]*? " | ' [\S\s]*? ' | [^>]*? )+
|
\/
( (?&tag_names) ) # (2), Close tags
\s*
)
>
(?(DEFINE)
(?<tag_names> # (3 start)
tag1 # Add all your tags here
| tag2
) # (3 end)
)
推荐阅读
- windows - PowerShell:断电时启动脚本的最佳方式
- javascript - 如何限制 ngModel 更改对 angular7 中其他内部 ng-template 的影响?
- typescript - 实现接口 Angular 8
- mysql - mysql准备语句中的DEFAULT关键字
- webhooks - 来自某些无法识别的 IP 范围的 Webhook 回调的逻辑应用问题
- r - r中的堆积条形图
- r - Hegazy-Green 正态性检验
- javascript - 如何从列表中编号值的开头和结尾删除双引号
- docker - 如何在 Docker 中访问 GitLab?
- python - 看到一条错误消息:“numpy.ndarray”对象没有属性“map”