我在解析 html 时使用 matchcollection。但是这个解决方案需要很长时间并且有时会失败。我在想,如果我设置 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);
最佳答案
您的正则表达式有太多 ".*?"
并且对于您的某些输入,可能的组合数量可能接近“无限”。尝试使用原子组 "(?>.*?)"
来自动丢弃组内任何标记记住的所有回溯位置。这至少会使所有正则表达式解析花费有限的时间。
关于c# - 比赛收集超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13418406/