我需要执行通配符(*
, ?
等)搜索字符串。
这就是我所做的:
string input = "Message";
string pattern = "d*";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
if (regex.IsMatch(input))
{
MessageBox.Show("Found");
}
else
{
MessageBox.Show("Not Found");
}
使用上面的代码,“Found”块被击中,但实际上它不应该被击中!
如果我的模式是“e*”,那么只有“Found”应该命中。
我的理解或要求是 d* 搜索应该找到包含“d”后跟任何字符的文本。
我应该将模式更改为“d.*”和“e.*”吗? .NET 中是否有对通配符的支持,它在使用 Regex 类时在内部执行此操作?
From http://www.codeproject.com/KB/recipes/wildcardtoregex.aspx:
public static string WildcardToRegex(string pattern)
{
return "^" + Regex.Escape(pattern)
.Replace(@"\*", ".*")
.Replace(@"\?", ".")
+ "$";
}
所以像foo*.xls?
将转变为^foo.*\.xls.$
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)