C#やVB.NETの正規表現の置換で、置換文字に使われる文字をエスケープする

https://codeday.me/jp/qa/20190129/199305.html
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/substitutions-in-regular-expressions
引数で指定する置換文字は、「$」を特殊文字として解釈する。(たとえば「$0」はマッチした文字列全体を指すなど)
そのため、「$」自体を出力するためには「$$」と書かなければならない。
「$」以外のキャラクタについてはこのようなエスケープ処理は必要ないらしい。

System.Text.RegularExpressions.Regex.Replace("abcdefg", "cd.*", "$0"); // この結果は"ab$0"にならない

System.Text.RegularExpressions.Regex.Replace("abcdefg", "cd.*", "$$0"); // こう書けば、結果が"ab$0"になる

逆にエスケープ処理がされるため「$」キャラクタ自体を出力したいときは「$$」に変換しなければならない。

System.Text.RegularExpressions.Regex.Replace("ドル記号×2「dollar dollar」", "dollar dollar", "$$"); // エスケープされるため"ドル記号×2「$$」"という結果が得られない

var replacement = "$$".Replace("$", "$$")
System.Text.RegularExpressions.Regex.Replace("ドル記号×2「dollar dollar」", "dollar dollar", replacement); // これなら想定通りの動作になる