我有以下代碼:爲什麼正則表達式上的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