0

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>>

正規表現の場合

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

着信文字列(std :: string)のサイズが140kbより長い場合。

同じレベルのタグを取得する必要があります。

std :: string = "<span id=1> </ span>
<span id=2> <span> </ span> </ span>
<span id=3> <span> <span> <span> </ span> </ span> </ span> </ span> "

3本の弦

0) <span id=1> </ span>
1) <span id=2> <span> </ span> </ span>
2) <span id=3> <span> <span> <span> </ span> </ span> </ span> </ span>

ブーストオプションを変更する方法。その正規表現は任意のサイズの文字列を処理しようとし、例外をスローしませんでした。または、正規表現なしで同じレベルのタグを取得するにはどうすればよいですか?

4

1 に答える 1

5

正規表現を使用してHTMLを解析することはできません。通常の文脈自由文法の場合、パーサーを取得することをお勧めしますが、HTMLの現実的な状態は、専用のHTMLパーサーライブラリが必要なことです。

于 2012-03-24T17:34:01.380 に答える