2011-08-12 18 views
5

たぶん簡単な質問と文字通りの文字列を取る...この状況で正規表現:特殊な再文字

String text = "fake 43 60 fake"; 
String patt = "[43.60]"; 

Match m = Regex.Match(text, patt) 

、m.Success =真のドットは任意の文字を置き換えるために(もスペース)。しかし、私はパットで文字通り文字通り一致する必要があります。

はもちろん、私はPATT

String patt = @"[43\.60]"; 

のでm.Success = falseをドットの前に「\」を使用することができますが、正規表現の世界でより多くの特殊文字があります。

私の質問は、文字列がそのまま設定されていると正規表現を使用するにはどうすればよいですか。したがって'43 .60 'は正確に'43 .60'と一致する必要があります。 '43〜60 'は'43〜60'と一致する必要があります....

ありがとうございます。

答えて

14

正規表現セーフリテラルを取得するには、次の[43.60]リテラルを一致させるために、例えば

string escaped = Regex.Escape(input); 

を:\[43\.60]

string escaped = Regex.Escape(@"[43.60]"); 

は、コンテンツの文字列を与えます。

このをエスケープのコンテンツを使用して正規表現を作成できます。例えば:は完全なパターンを作るためにいくつかの他の正規表現の断片でエスケープされた文字列を組み合わせに

string find = "43?60"; 
string escaped = Regex.Escape(find); 
bool match = Regex.IsMatch("abc 43?60", escaped); 

注意は多くの場合、あなたがしたいということ。

+0

ありがとうございました!私は、これらの状況には何かがあることを知っています... – robertpnl

関連する問題