Regex.Replaceメソッドでは、別の文字列への置換・正規表現での置換のほか、マッチ箇所を検証して変換するメソッドを使って置換することもできます。 Regex.ReplaceメソッドにMatchEvaluatorデリゲートを指定することで、そのメソッドを呼び出した結果を置換文字列とすることができます。 置換時の動作をメソッドとして細かく規定することができるため、置換の正規表現要素だけでは記述できないような置換を行うことができます。
MatchEvaluatorデリゲートにはマッチ箇所の置換を行うメソッド(Matchクラスを引数にとり、置換後の結果となる文字列を返すメソッド)を指定します。 Replaceメソッドを呼び出してマッチする箇所が見つかると、マッチした箇所に該当するMatchインスタンスがMatchEvaluatorに渡されます。 MatchEvaluatorが返す文字列がマッチ箇所に置換され、Replaceメソッドの結果として返されます。
次の例では、Replaceメソッドを用いて拡張子にあたる部分を探索し、MatchEvaluatorデリゲートによって拡張子部分を".bak"
に置き換えています。
Regex.Replaceメソッドで置換後の文字列を指定した場合、この文字列は単純な文字列ではなく正規表現として解釈され、$ で始まる正規表現要素を指定することが出来ます。