次のように、RegEx を使用して、文字列内のすべての「a」、「b」、または「c」をブラックスラッシュ文字に置き換えることができることを知っています。
string result = Regex.Replace(input, "[abc]", "\\");
しかし、各オカレンスをバックスラッシュとそれに続く一致した文字に置き換えるにはどうすればよいでしょうか?
MatchEvaluatorデリゲートとこのReplace ..のオーバーロードを使用して、各Matchを変換できます。
Regex.Replace(input, @"[abc]", m => string.Format(@"\{0}", m.Value))
MatchEvaluator
anyを使用する必要はありません。Regex.Replace
置換パターンの一致値全体にアクセスする専用の手段を提供します: $&
。マッチ全体を代用するを参照してください。
$&
置換には、置換文字列内の一致全体が含まれます。多くの場合、一致した文字列の先頭または末尾に部分文字列を追加するために使用されます。たとえば、($&
) 置換パターンは、各一致の最初と最後に括弧を追加します。一致しない場合、$&
置換は効果がありません。
使用する
var result = Regex.Replace(input, @"[abc]", @"\$&");
var s = "abcd";
var result = Regex.Replace(s, @"[abc]", @"\$&");
Console.WriteLine(result);
// => \a\b\cd