我在解析到html时正在使用matchcollection。但是此解决方案需要很长时间,有时会失败。我在想如果我设置matchcollection超时将解决此问题。如何设置比赛集合的超时时间? (框架4.0)

anchorPattern[0]="<div.*?class=\"news\">.*?<div.*?class=\".*?date.*?\">(?<date>.*?)?</div>.*?<a.*?href=\"(?<link>.*?)\".*?>(?<title>.*?)?</a>.*?<(span.*?class=\".*?desc.*?\">(?<spot>.*?)?</span>)?"
    MatchCollection mIcerik = Regex.Matches(html, anchorPattern[i], RegexOptions.Compiled);
    if (mIcerik.Count > 0)
          ListDegree.Add(i,mIcerik.Count);

最佳答案

您的正则表达式有太多".*?",对于某些输入而言,可能的组合数量可能接近“无限”。尝试改用原子组"(?>.*?)",以自动丢弃该组内所有标记记住的所有回溯位置。这至少将使所有正则表达式解析花费有限的时间。

09-28 00:55