8

次のように、RegEx を使用して、文字列内のすべての「a」、「b」、または「c」をブラックスラッシュ文字に置き換えることができることを知っています。

string result = Regex.Replace(input, "[abc]", "\\");

しかし、各オカレンスをバックスラッシュとそれに続く一致した文字に置き換えるにはどうすればよいでしょうか?

4

2 に答える 2

20

MatchEvaluatorデリゲートとこのReplace ..のオーバーロードを使用して、各Matchを変換できます。

Regex.Replace(input, @"[abc]", m => string.Format(@"\{0}", m.Value))
于 2012-05-22T00:00:06.093 に答える
6

MatchEvaluatoranyを使用する必要はありません。Regex.Replace置換パターンの一致値全体にアクセスする専用の手段を提供します: $&マッチ全体を代用するを参照してください。

$&置換には、置換文字列内の一致全体が含まれます。多くの場合、一致した文字列の先頭または末尾に部分文字列を追加するために使用されます。たとえば、( $&) 置換パターンは、各一致の最初と最後に括弧を追加します。一致しない場合、$&置換は効果がありません。

使用する

var result = Regex.Replace(input, @"[abc]", @"\$&");

C# デモ:

var s = "abcd";
var result = Regex.Replace(s, @"[abc]", @"\$&");
Console.WriteLine(result);
// => \a\b\cd
于 2019-05-31T09:57:47.623 に答える