HTMLパーサーの正規表現を作成しようとしています。
1つ以上のタグを含む特定の属性(例: <div>
with )のhtmlタグを照合したい。正規表現はタグ全体(fromから)と一致する必要があります。私はいつも「メモリが使い果たされた」エラーを受け取るようです-私のプログラムはおそらく、見つけたすべてのタグを一致するものとして受け取ります。class="tab news selected"
<a href>
<div>
</div>
Boost正規表現ライブラリを使用しています。
HTMLパーサーの正規表現を作成しようとしています。
1つ以上のタグを含む特定の属性(例: <div>
with )のhtmlタグを照合したい。正規表現はタグ全体(fromから)と一致する必要があります。私はいつも「メモリが使い果たされた」エラーを受け取るようです-私のプログラムはおそらく、見つけたすべてのタグを一致するものとして受け取ります。class="tab news selected"
<a href>
<div>
</div>
Boost正規表現ライブラリを使用しています。
あなたはおそらくこの質問を再検討する必要があります。正規表現とHTML。要点は、正規表現を使用してHTMLを解析することは、決して理想的な解決策ではないということです。
正規表現は最善の解決策ではないかもしれませんが、私はすでに5つの異なるライブラリを使用しており、<a href>
タグとキーワードの検索に関してはBoostで問題ありません。
私はこれらの正規表現を使用しています:
/<a[^\n]*/searched attribute/[^\n]*>[^\n]*</a>/
<a href>
タグを見つけるためと:
/<a[^\n]*href[[^\n]*>/searched keyword/</a>/
リンクを見つけるため
(ところで、それはもっとうまくいくことができますか?-私は正規表現を吸います;))
今必要なのは<a href>
、'sを含むタグを見つけることです。正規表現で問題なく動作すると思います。おそらく、piotrが言ったように、独自の解析関数を作成する必要があります。
flexと同じように実行します。<div>を大文字と小文字を区別しない一致と一致させ、パーサーを「div一致」状態にし、</div>まで入力の処理を続けて状態をリセットします。
これには、2つの正規表現と1つの状態変数が必要です。
SGMLタグの有効な文字は[A-Za-z_:]です。
したがって、/ <[A-Za-z _:]+>/はタグと一致します。