【发布时间】:2013-01-11 23:10:06
【问题描述】:
我有一个 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 文档? 或者也许有更有效的算法来过滤这个..
【问题讨论】:
-
您需要了解或使用 html 做什么?你需要知道哪些词出现了,它们出现了多少次?
-
那些关键字是什么..我们无法读懂你的想法..
-
我想知道是否出现自定义关键字。它可以是任何东西。我想知道哪些关键字匹配
-
@unr3al011 在将其用作正则表达式之前,您应该使用
Regex.Escape转义关键字,否则如果关键字中出现.或*,它将被视为特殊字符。 -
我希望它被视为特殊字符
标签: c# regex full-text-search string-matching