c# - 字符串匹配

时间:2012-01-26 18:18:02

标签: c# regex

我使用代码搜索字符串数,并将它们与一个字符串匹配。

我的代码:

foreach (string needle in list)
{
    if (Regex.IsMatch(haystack,needle))
    {
        //do some stuff
    }
}

有没有办法加快匹配过程?

2 个答案:

答案 0 :(得分:2)

如果您的正则表达式合理,那么您当前的方法很可能是正常的。您可能需要考虑使用编译的正则表达式而不是静态IsMatch和字符串。

如果你需要更快的速度 - 考虑更好的算法(即从http://en.wikipedia.org/wiki/String_searching_algorithm开始),你可以构建更快的搜索所有模式组合而不是单独的模式。

请注意,与任何性能问题一样,没有替换测量 - 尝试并进行比较。

答案 1 :(得分:0)

嗯,你必须通过整个列表,这至少意味着O(n)的复杂性。加速该过程的一种可能方法是首先对列表进行排序,但这只会将算法复杂度提高到O(n Log n)。