2017-03-14 4 views
0

正規表現パターンの構文を理解する上で問題があります。 私はOutlook interopを使ってemail.msgのHTMLbodyを調べています。インターネットにsrcを持つHTMLイメージタグを見つけるための正規表現パターン

インターネットへの参照があるすべての画像を削除します。 私はRegex.Replaceを使用してすべてのイメージタグを見つけ、テキストで置き換えています。

string altText = " <i>*Reference to picture on the internet removed*</i> "; string b = Regex.Replace(a, @"(<img([^>]+)>)", altText);

これは動作しますが、私は、インターネットからsrcを持つタグを見つけたい:

これは私がきたもの、です。私は私のGoogle検索でこれを見つけた :

string matchString = Regex.Match(a, "<img.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase).Groups[1].Value; 

しかし、すべての画像がsrcタグを持っているように見えるので、それは助けにはなりません。私の目標は、可能であればRegexにパターン構文を書くことです。ソース(src)がhttp、https、またはwwwで始まるかどうかを確認します。

私にこれを手伝ってくれる人はいますか?

+0

[Htmlの敏捷性パック](https://htmlagilitypack.codeplex.com/)を参照してくださいあなたが扱うことが可能になりますタスクを簡単な方法で実行します。 –

答えて

1

正規表現ではなく画像タグを直接見つけるために、HTMLパーサを使用することをお勧めします。必要に応じて、src属性をチェックするためにRegexを使用することができます。それは同様に、時にはリンクことに留意すべきであるRegex

編集

<img.+?src=[\"']((?:https?|www).*)[\"'].*?> 

正規表現ケース:ところで

、私は次の正規表現は、あなたが期待している結果を生むと信じてちょうど//で始めることができます。次の正規表現は、それを行う必要があります。より広範な正規表現のソリューションマッチングURLについては

<img.+?src=[\"']((?:https?|www|//).*)[\"'].*?> 

を、What is a good regular expression to match a URL?

+0

どのようなHTMLパーサーをお勧めしますか? –

+1

Html Agility Packは、通常私が使用しているものです:https://www.nuget.org/packages/HtmlAgilityPack/ – StfBln

+0

ありがとう!これはまさに私が探していたものです。私はHTMLパーサーもチェックします。 – Andreas

関連する問題