2017-01-04 2 views
1

あるパターンで囲まれた特定の文字列を見つけるために、正規表現は実行時に(私の場合はC#を使用して)構築する必要があります。例えば、プログラムは、myStringが空白で終わることをtargetStringの中に見つける必要があることを知っています。私達はちょうどRegexは実行時に決定された任意の文字列を見つける

string myRegex = myString + @"\s"; 

する正規表現を設定した場合myStringは以下のように正規表現制御文字が含まれているならば、正規表現は信頼されません。 +などたとえばが

myString = "f.f"; 
targetString = "f.ff fff f.f ff"; 

と言って、その後の正規表現上のmyRegexは、私たちが望むものではありませんこれは最初のfffと一致します。もちろん、正しい正規表現はf\.f\sですが、myStringをこのような形式に変換すると、多数の正規表現制御文字を指定すると、面倒です。

このような正規表現を任意の入力文字列で生成する方法はありますか?理想的には、文字列が文字通り一致する必要があることを示すために、myStringを囲むために使用できるいくつかの制御文字があります。だから私の空想では、正規表現は中括弧は、私が探しています魔法の構造を表す

string myRegex = @"{{" + myString + @"}}\s"; 

のようなものを生成することができます。

myStringを取り囲むパターンは、単に「末尾が\s」より複雑な場合があります。

答えて

2

使用Regex.Escape():

string myRegex = Regex.Escape(myString) + @"\s"; 
+0

おかげで、私はまた、必ず 'myString'が敏感にかかわらず、ケースを一致させる必要があります。私はこれを "i"フラグをオフにすると組み合わせると思います。 – Patrick

関連する問題