2011-11-07 9 views
1

http://を含まないHTMLで、すべての画像タグを探し、src属性の前にhttp://という属性を追加したいとします。正規表現の一致値を変更する

すべてのimgタグがhttp://で始まらない正規表現が見つかりました。私はsrc属性だけにhttp://をappdeningするのにいくつかの問題があります。どのように正規表現置き換えを使用してこれを達成することができます。

<img [^<]*src="(?!http://)(?<source>[^"]*)"[^<]*/> 

ソースにはsrc値が入ります。私はちょうどそれが$2 = "http://" + $2と言う必要があります。これをC#コードでどのように書くことができますか?

答えて

2

既存のタグを破損したくないので、興味のない文字列の部分にグループを割り当てる必要があります。ためには、これらの置き換えパターンマッチの部品などができるようにするには:次に置き換える

(<img [^<]*src=")(?!http://)(?<source>[^"]*)("[^<]*/>) 

することは簡単です:

regex.Replace(input, "$1http://$3$2"); 

(また、これはあなたのアプリケーションのユースケースのために働くかもしれませんが、私は言及すべきである、that in general it is not considered a good idea to parse HTML with regex

+0

実際にはregex.Replace(入力、 "$ 1http:// $ 3 $ 2"); $ 4の代わりに$ 2。あなたはあなたの答えを更新するべきです。 –

+0

ありがとうございます。それは素晴らしい作品です。私はregex.replaceのコンセプトも理解しました。ご協力いただきありがとうございます。 –