获得相同级别的标签?

man*_*ing 0 c++ regex visual-c++ boost-regex

Boost引发异常.

An unhandled exception "0x000007fefd0aa88d" in the "svg.exe": Exception Microsoft C: boost :: exception_detail :: clone_impl <boost :: exception_detail :: error_info_injector <std::runtime_error>>
Run Code Online (Sandbox Code Playgroud)

用于正则表达式

opentag = [<] [s] [p] [a] [n]
closetag = [<] [/] [s] [p] [a] [n] [>]
    /opentag+"(?>(?>(?!"+opentag+"|"+closetag+").) |(?R))*"+closetag/
Run Code Online (Sandbox Code Playgroud)

如果传入的字符串(std :: string)大小超过140 kb.

我需要将标签放在同一级别.

std :: string = "<span id=1> </ span>
<span id=2> <span> </ span> </ span>
<span id=3> <span> <span> <span> </ span> </ span> </ span> </ span> "
Run Code Online (Sandbox Code Playgroud)

三弦

0) <span id=1> </ span>
1) <span id=2> <span> </ span> </ span>
2) <span id=3> <span> <span> <span> </ span> </ span> </ span> </ span>
Run Code Online (Sandbox Code Playgroud)

如何更改boost选项,正则表达式尝试处理任何大小的字符串并且不会抛出异常.或者如何获得相同级别的标签而没有正则表达式?

Pup*_*ppy 5

您无法使用正则表达式解析HTML.对于普通的无上下文语法,我建议只使用解析器,但HTML的现实状态是你需要一个专用的HTML解析器库.