我使用代码搜索字符串数,并将它们与一个字符串匹配。
我的代码:
foreach (string needle in list)
{
if (Regex.IsMatch(haystack,needle))
{
//do some stuff
}
}
有没有办法加快匹配过程?
答案 0 :(得分:2)
如果您的正则表达式合理,那么您当前的方法很可能是正常的。您可能需要考虑使用编译的正则表达式而不是静态IsMatch和字符串。
如果你需要更快的速度 - 考虑更好的算法(即从http://en.wikipedia.org/wiki/String_searching_algorithm开始),你可以构建更快的搜索所有模式组合而不是单独的模式。
请注意,与任何性能问题一样,没有替换测量 - 尝试并进行比较。
答案 1 :(得分:0)
嗯,你必须通过整个列表,这至少意味着O(n)的复杂性。加速该过程的一种可能方法是首先对列表进行排序,但这只会将算法复杂度提高到O(n Log n)。