HTMLの構文解析のための正規表現の書き方?
-
16-09-2019 - |
質問
私は私のHTMLパーサーのための正規表現を記述しようとしています。
私は与えられた属性(例。<div>
とclass="tab news selected"
)は、1つまたは複数の<a href>
タグが含まれているとhtmlタグをマッチさせたいです。正規表現は、(<div>
から</div>
まで)全体のタグと一致する必要があります。私はいつも、「メモリが枯渇」エラーを取得するように見える - 私のプログラムは、おそらくそれが一致するものとして見つけることができるすべてのタグになります。
私は、ブースト正規表現ライブラリを使用しています。
解決
また、これらの質問は役に立ち見つけることができます:
<のhref = "https://stackoverflow.com/questions/701166/can-you-provide-some-examples-of-why-it-is-hard-to-parse-xml-and-html- -REGE ">あなたは正規表現でXMLやHTMLを解析することは困難である理由のいくつかの例を提供することはできますか?の
他のヒント
あなたはおそらくで再をこの質問を見なければなりません。正規表現とHTML。要点は、HTMLを解析するために正規表現を使用すると、任意の手段によって、理想的なソリューションではないということです。
、仮に全ての可能な正規表現を使用しないでください。あなたのコードは、実際にXHTMLの場合はAIが両方のXercesをお勧めすることができます(つまり、それが整形式XMLもあります)>と Expatのの正規表現よりも、あなたのための多くのbettervの仕事をするXMLパーサ、。
たぶん、正規表現は、最善の解決策ではありませんが、私はすでに5つの異なるライブラリーのように使用していますし、それが<a href>
タグやキーワードを見つけることになるとブーストは罰金します。
私はこれらの正規表現を使用しています:
/<a[^\n]*/searched attribute/[^\n]*>[^\n]*</a>/
タグを見つけるための<a href>
及びます:
のリンクを見つけるための/<a[^\n]*href[[^\n]*>/searched keyword/</a>/
(?ところで、それはより良い行うことができます - 私は正規表現で吸う;))
私は今、必要なの<a href>
さんを含むタグを検索すると、私は正規表現はすべての権利やるだろうと思いれる - 多分私はピョートルが言ったように私自身の解析関数を記述する必要があります。
はない:大文字小文字を区別しないマッチングでの
この2つの正規表現と状態変数を取ります。
SGMLタグの有効な文字は[A-ZA-Z _:
だから:/ <[A-ZA-Z _:] +> /タグに一致する
。