我有以下代码:为什么正则表达式上的For循环比较慢?
string pattern = @"(?:\S+\s){1,6}\S*" + search + @"\S*(?:\s\S+){1,6}";
String dbContents = row[2].ToString();
var matches = Regex.Matches(dbContents, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
for (int i = 0; i < matches.Count; i++)
{
if (i == 3)
break;
Contents += String.Format("... {0} ...", matches[i].Value);
}
我试图做到的是搜索词后,得到搜索词前一到六个词与词1-6。在执行代码时,性能在for循环中“matches.Count”。对于非常大的字符串,它会占用一分钟以执行。我很困惑为什么以及如何解决这个问题。
谢谢!深夜将我的头撞在墙上。这大大提高了性能。我得到5秒的加载时间与58.67秒相比 – Chris