【发布时间】:2015-11-06 07:17:54
【问题描述】:
我有大约 50000 个关键字应用了正则表达式模式。我的应用程序获取了一些文本内容并尝试查找与此内容相关的关键字。
我这样做是为了遍历所有关键字并在内容中搜索每个关键字。
因为要匹配的内容太多,如果存在我愿意找到更好的方法。
有没有更好的方法呢?
这是我目前正在做的示例代码:
List<string> keywords = getKeywords();
string textToMatch = getNews();
List<string> result = new List<string>();
foreach (var keyword in keywords)
{
Match r = Regex.Match(textToMatch, keyword);
if(r.Success)
result.Add(keyword)
}
【问题讨论】:
-
我想你最好在Code Review部分问。
-
@Handoko.Chen 不。这不适合代码审查,因为这里没有要审查的代码!
-
@Handoko.Chen 因为你,我分享了一个示例代码。现在等待您的建议:)
-
@mareva 我不是 RE 方面的专家,事实上我讨厌它,因为它很慢。但我看到你使用 Regex 类的静态方法。我读到有一种方法可以加快 Regex 调用。请参阅 this article 和 this article。或者,如果字符串很简单,您可以使用常规字符串方法。请参阅this article 了解正则表达式和字符串方法之间的比较。
-
为什么要使用正则表达式?如果关键字是纯文本,那么使用
if(textToMatch.Contains(keyword)){result.Add(keyword);}可能会更快。
标签: c# regex matching keyword-search