の値はinput 2
、有効な正規表現にすることができます。あなたがする必要があるのは、^
と$
アンカーを追加することだけです。これらにより、正規表現エンジンがそのパターンに明確に一致できるようになるため、あなたの場合、次のようにすることができます:
String input2 = "file*.xml";
Regex regex = new Regex("^" + input2.Replace(".", "\\.").Replace("*",".*") + "$");
String input1 = "file_123.xml";
String input3 = "file_123.xml.done";
System.Console.WriteLine(regex.IsMatch(input1));
System.Console.WriteLine(regex.IsMatch(input3));
System.Console.ReadLine();
...
は.
正規表現の特殊文字であるため、エスケープする必要があります。2 番目のreplace
ステートメントは、以上の繰り返しを意味する演算子.
の前に、任意の文字を意味するa を追加します。*
上記のコードは、それぞれ と を生成True
しFalse
ます。
編集:上記のように、シナリオによっては、より多くの文字をエスケープする必要があります。
編集 2: 以下のコードは、正規表現言語の一部である文字列をエスケープする必要があります。あなたの場合、これは*
オペレーターも意味します。私はRegex.Escape
メソッドを使用して、特別な正規表現の意味を持つ可能性のあるすべての文字をエスケープし、通常の方法を使用しreplace
て*
元に戻しました。
String input2 = "file*.xml";
input2 = Regex.Escape(input2); //Yields file\\*\\.xml
input2 = input2.Replace("\\*", ".*"); //Yields file.*\\.xml
Regex regex = new Regex("^" + input2 + "$");
String input1 = "file_123.xml";
String input3 = "file_123.xml.done";
System.Console.WriteLine(regex.IsMatch(input1));
System.Console.WriteLine(regex.IsMatch(input3));
System.Console.ReadLine();