我有一个 html 文档,并希望针对多个 (1 - 10k) [目前为 1k,稍后最多 10k] 关键字的出现对其进行过滤。
我有一个预编译的正则表达式,它存储我的搜索词,例如:
static Regex r = new Regex(@"keyword1|keyword2|keyword999",RegexOptions.Compiled | RegexOptions.IgnoreCase);
这是我的代码:
Stopwatch sw = new Stopwatch();
sw.Start();
MatchCollection matches = Cache.r.Matches(doc.DocumentNode.InnerHtml);
string s = "";
if (matches.Count > 0)
{
foreach (Match m in matches)
{
s += m.Value + ",";
}
}
long time = sw.ElapsedMilliseconds;
Console.Write(time + " = "+matches.Count+" -> "+s );
平均时间大约需要 5-8 秒。这太过分了。是否有任何有效的方法来过滤针对大量关键字的 html 文档?或者也许有更有效的算法来过滤这个..