Regex.Escapeメソッドを使うと、正規表現要素をエスケープした文字列を取得することができます。 コード中に静的に正規表現を記述する場合は事前にエスケープ済みの状態で記述することができますが、例えばユーザー入力による検索文字列の指定など、実行時にエスケープする必要が生じるような場合にはこのメソッドを用いることができます。
Regex.Escapeメソッドで文字列中の正規表現要素をエスケープする
using System;
using System.Text.RegularExpressions;
class Sample {
static void Main()
{
// 文字列中の記号のうち正規表現要素として使われるものをエスケープする
var str = @"().*[]!#%$";
Console.WriteLine(str);
Console.WriteLine(Regex.Escape(str));
}
}
実行結果
().*[]!#%$ \(\)\.\*\[]!\#%\$
このメソッドでは、置換の正規表現要素を表す$
をエスケープしても$$
とはならず、\$
とエスケープされるようです。