如何将XML文档中的所有开始标记与RegEx匹配?我只需要收集使用的标签名称。
这就是我所拥有的:
(?<=<)(.*?)((?= \/>)|(?=>))
这匹配所有开始和结束标记。
示例:
<Habazutty>yaddayadda</Habazutty>
<Vogons />
<Targ>blahblah</Targ>
以上代码匹配:
Habazutty
/Habazutty
Vogons
Targ
/Targ
我只需要
Habazutty
Vogons
Targ
我无法找到排除结束标记的方法。消极的前瞻不起作用 - 什么都没找到。我一定搞砸了。
答案 0 :(得分:2)
您可以使用以下方式实现此目的:
<([^\/>]+)[/]*>
群组捕获将有你的输出
答案 1 :(得分:0)
您可以将(?<=<)(.*?)((?= \/>)|(?=>))
更改为(?<=<)([^\/]*?)((?= \/>)|(?=>))
,即不使用(.*?)
作为代码名称,而是使用([^\/]*?)
。无论如何,标签名称中不允许/
。
答案 2 :(得分:0)
找到另一种解决方案:
((?=<)(?!<\/)<)(.*?)((?= \/>)|(?=>))
基本上这个((?=<)(?!<\/)<)
看起来背后的一切都是“&lt;” (?=<)
而不是“&lt; /”(?!<\/)
。
@Redneb的答案更清晰,更少捕捉群体,更短,更漂亮。