for 的值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();
...
The.
是正则表达式中的特殊字符,因此需要对其进行转义。第二个replace
语句添加一个.
表示运算符前面的任何字符*
,表示或多次重复。上面的代码分别产生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();