0

イメージ タグのすべてのプロパティを抽出するための RegEx パターンが必要です。

ご存知のように、世の中には不正な形式の HTML がたくさんあるため、パターンはそれらの可能性をカバーする必要があります。

私はこのソリューションを見てた:

私は次のようなものを思いつきます:

(alt|title|src|height|width)\s*=\s*["'][\W\w]+?["']

私が見逃している可能性や、より効率的な単純なパターンはありますか?

編集:
申し訳ありませんが、より具体的に説明します.NETを使用してこれを行っているため、サーバー側にあります。
私はすでに img タグのリストを持っています。あとはプロパティを解析するだけです。

4

6 に答える 6

5

ご存知のように、世の中には不正な形式の HTML がたくさんあるため、パターンはそれらの可能性をカバーする必要があります。

それはしません。「悪意のある」(未知のソースからの) HTML を解析する必要がある場合は、HTML パーサーを使用します。

于 2008-12-08T17:35:28.343 に答える
1

パフォーマンスが大きな問題ではない場合、このサーバー側またはjqueryを実行している場合は html パーサー ( pythonのBeautifulSoupなど) を使用し、クライアント側で実行している場合は単純な JavaScript を使用します。確かにやり過ぎですが、はるかに高速で、バグが発生する可能性が低く (コーナーケースを考慮しているため)、潜在的な不正を処理します。

于 2008-12-08T17:36:38.993 に答える
1

あなたの最善の策は、正規表現を使用する代わりに、HTML Agility Packのようなものを使用することです。多くのケースを処理するように設計されており、エッジケースを打ち出すことによる頭痛の種を少なくすることができます

于 2010-01-03T06:52:29.480 に答える
0

すべての属性値が必要な場合は、DOM を使用することをお勧めしますか? のようなものelement.attributesがうまくいきます。

正規表現を主張する場合は//\b\w+="[^"]+"//、すべてを取得する必要があります。

于 2008-12-08T17:36:05.470 に答える
0

正規表現に取り掛かる前に、何ができるか見てみましょう: 正規表現は、XHTML 自己完結型タグを除く開始タグに一致します。

于 2010-01-03T08:41:42.210 に答える
0
/<img(\s+([a-z]{3,})=(["']([^"']*)["']|[\S]))+\s*/?>/i

これに対する match_all が返されます (形式はライブラリによって異なりますが、キー インデックスは次のとおりです)。

0 -> image tag
1 -> attribute
2 -> attribute name
3 -> attribute value (with enclosing quotes if exists)
4 -> attribute value (without enclosing quotes if it has them, otherwise empty, use 3)
于 2010-01-03T08:57:47.647 に答える