1

HTMLファイルを解析してすべての画像ファイルを取得するための正規表現を作成しようとしています。電子メールとして送信する前に画像を埋め込むためにこれを行う必要があります。

画像を参照できる「場所のリスト」はありますか?たとえば、内部<img src="here" />、CSSスタイルurl('here')、またはを調べる必要があることはわかっていますがbackground='here'、それはすべてのケースをカバーしていますか?

そして、正規表現はすでにどこかに存在しますか?正規表現を書くのは苦痛だと思います。ケースを見逃したり、壊れたHTMLマークアップを処理するのを忘れたりしたくありません。

<img>タグの場合、次のようなものが見つかりました。

(?<=img\s+src\=[\x27\x22])(?<Url>[^\x27\x22]*)(?=[\x27\x22])

しかし、他の場所を含める方法がわかりません。

4

2 に答える 2

4

正規表現を使用してhtmlを解析するのではなく、HtmlAgilityPackなどのHtmlパーサーを使用してください

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var a = doc.DocumentNode.Descendants("img")
            .Select(x => x.Attributes["src"].Value)
            .ToArray();
于 2012-09-04T09:41:06.830 に答える
1

正規表現は、 HTML 、特にさまざまなソースからのHTMLを解析するのに適していません。

HTMLAgilityPackを使用することをお勧めします。これはこのための専用のHTMLパーサーです。

Html Agility Pack(HAP)とは正確には何ですか?

これは、読み取り/書き込みDOMを構築し、プレーンXPATHまたはXSLTをサポートするアジャイルHTMLパーサーです(実際には、XPATHまたはXSLTを理解して使用する必要はありません。心配しないでください...)。これは、「Web外」のHTMLファイルを解析できるようにする.NETコードライブラリです。パーサーは、「現実世界」の不正な形式のHTMLに対して非常に寛容です。オブジェクトモデルは、System.Xmlを提案するものと非常に似ていますが、HTMLドキュメント(またはストリーム)用です。

別の方法は、cssセレクター(JQueryなど)を使用して要素を選択するためのHtmlAgilityPack拡張機能であるScarpySharpです

于 2012-09-04T09:39:23.463 に答える