RegEx 查找所有 XML 标签
RegEx find all XML tags
如何将 XML 文档中的所有开始标记与 RegEx 匹配?我只需要收集使用的标签名称。
这是我的:
(?<=<)(.*?)((?= \/>)|(?=>))
这匹配所有开始和结束标签。
示例:
<Habazutty>yaddayadda</Habazutty>
<Vogons />
<Targ>blahblah</Targ>
以上代码匹配:
Habazutty
/Habazutty
Vogons
Targ
/Targ
我只要
Habazutty
Vogons
Targ
我想不出排除结束标记的方法。负前瞻不起作用 - 什么也没发现。我一定是搞砸了。
您可以将 (?<=<)(.*?)((?= \/>)|(?=>))
更改为 (?<=<)([^\/]*?)((?= \/>)|(?=>))
,即不使用 (.*?)
作为标签名称,而是使用 ([^\/]*?)
。 /
无论如何都不允许出现在标签名称中。
找到另一个解决方案:
((?=<)(?!<\/)<)(.*?)((?= \/>)|(?=>))
基本上这个 ((?=<)(?!<\/)<)
会查看所有“<”(?=<)
而不是“< /” (?!<\/)
.
的内容
@Redneb 的回答虽然更简洁,捕获组更少,更短更漂亮。
您可以简单地使用:
<([^\/>]+)[/]*>
群抓会有你的输出
如何将 XML 文档中的所有开始标记与 RegEx 匹配?我只需要收集使用的标签名称。
这是我的:
(?<=<)(.*?)((?= \/>)|(?=>))
这匹配所有开始和结束标签。
示例:
<Habazutty>yaddayadda</Habazutty>
<Vogons />
<Targ>blahblah</Targ>
以上代码匹配:
Habazutty
/Habazutty
Vogons
Targ
/Targ
我只要
Habazutty
Vogons
Targ
我想不出排除结束标记的方法。负前瞻不起作用 - 什么也没发现。我一定是搞砸了。
您可以将 (?<=<)(.*?)((?= \/>)|(?=>))
更改为 (?<=<)([^\/]*?)((?= \/>)|(?=>))
,即不使用 (.*?)
作为标签名称,而是使用 ([^\/]*?)
。 /
无论如何都不允许出现在标签名称中。
找到另一个解决方案:
((?=<)(?!<\/)<)(.*?)((?= \/>)|(?=>))
基本上这个 ((?=<)(?!<\/)<)
会查看所有“<”(?=<)
而不是“< /” (?!<\/)
.
@Redneb 的回答虽然更简洁,捕获组更少,更短更漂亮。
您可以简单地使用:
<([^\/>]+)[/]*>
群抓会有你的输出