带有XML标记的正则表达式

带有XML标记的正则表达式,xml,regex,parsing,boost,tags,Xml,Regex,Parsing,Boost,Tags,我目前正在处理一个XML解析器,我需要使用正则表达式来获取所有标记,以便将它们放在树中 我的文件看起来像 <block1> <tag1> <subtag1>a</subtag1> <subtag2>b</subtag2> </tag1> <tag2> <subtag3>c</subtag3> <su

我目前正在处理一个XML解析器,我需要使用正则表达式来获取所有标记,以便将它们放在树中

我的文件看起来像

<block1>
   <tag1>
       <subtag1>a</subtag1>
       <subtag2>b</subtag2>
   </tag1>
   <tag2>
       <subtag3>c</subtag3>
       <subtag4>d</subtag4>
   </tag2>
</block1>

A.
B
C
D
我想让我的正则表达式与

<block1>
<tag1>
<subtag1>
<subtag2>
<tag2>
<subtag3>
<subtag4>

为了避免得到结束标记,我避开了“/”,它工作得很好

我的最后一个问题是,我得到了整个单行标记,因为第一个“

我正在使用

boost::regex r("(<[^/].*>)");
boost::regex r(“()”);
提前感谢,
杜比勒先生

/()*/

出于对某些东西的热爱:使用否定字符类:
]*>
我知道正则表达式不是解析XML代码的好方法,但它是出于教育目的,我想在我的项目中使用它。使用。*?(惰性匹配)而不是。*(贪婪匹配)。这将使你获得尽可能短的匹配时间。@dubill\u你得到的最好建议是对这个问题的第一个评论。
字符与属性值中的字符一样完全有效。例如,这很好
诸如此类
。要使建议的regexp正常工作,您需要100%确定您将始终处理属性中不能包含
的数据。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,只有链接的答案可能会无效。该链接是我发布的,它包含SO理解答案所需的所有内容。
/(<\w+>).*?/