我有以下代码,用于检测一个字符串是否与一个正则表达式匹配,两者作为该方法的参数。
private bool Set(string stream, string inputdata)
{
bool retval = Regex.IsMatch(inputdata, stream, RegexOptions.IgnoreCase);
return retval;
}
我读到过缓存和编译表达式会使正则表达式比较更快,下面是这样一段代码的示例,但我不知道如何修改我原来的
Set()
方法的代码以利用编译。我该如何修改
Set()
方法来应用下面的代码?static Dictionary<string, Regex> regexCache = new Dictionary<string, Regex>();
private Regex BuildRegex(string pattern)
{
Regex exp;
if (!regexCache.TryGetValue(pattern, out exp))
{
var newDict = new Dictionary<string, Regex>(regexCache);
exp = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
newDict.Add(pattern, exp);
regexCache = newDict;
}
return exp;
}
我使用了exp.IsMatch
而不是Regex.IsMatch
,但这是一个私有变量,所以我不知道该如何继续操作。