2012-04-27 10 views
3

Regex.Replaceで最初のグループを使用するにはどうすればよいですか?
私はdocumentationのように$1を使ってみました。私は?:かでグループ化を使用する場合も、それは問題ではない...C#Regex.Replace first group

string text = "<font color="#aa66bb">farbig</font>"  

/// this does not work 
Regex.Replace(text, "&lt;font color=&quot;#(?:[\\d\\w]{6})&quot;&gt;", "<font color=\"#$1\">"); 
// => "<font color=\"#$1\">farbig&lt;/font&gt;" 

// this works fine though 
Regex.Match(text, "&lt;font color=&quot;#([\\d\\w]{6})&quot;&gt;").Groups[1]; 
// => aa66bb 

だから私はここで間違って何をやっていますか?

答えて

1

ここでは非キャプチャグループを使用しているだけでしょうか?

Regex.Replace(this.Text, "&lt;font color=&quot;#(?:[\\d\\w]{6})&quot;&gt;", "<font color=\"#$1\">"); 

それは:あなたは、すべての特殊文字エスケープするところで、@を使用することができます

(?:[\\d\\w]{6}) 

代わりの

([\\d\\w]{6}) 

:また@"(?:[\d\w]{6})"

を、あなたは

を試してみました
"<font color=\"#" + $1 + "\">" 

そうでなければ私はC#これは、あなたが求めている質問への答えではない普通の文字列値

+0

ええと、私の例のように、 '?:'が別の方法でうんざりしていたようです。ありがとう! –

0

から$ 1知っているだろうとは思わないが、あなたはあなたの例にしようとしているもの、あなたがHtmlDecodeを使用することができませんしhereと記載されており、全体的な問題を避けることができます。

+0

問題は私が 'HTMLEncode'を使っていて、b、i、u、br、hr、fontのような特定のタグだけをデコードすることです。 –