如何避免MatchCollection处理错误?

时间:2012-10-04 18:07:48

标签: c# .net regex

我正在使用matchcollection,例如:

matches = new Regex(ABS_URL_REGEX, RegexOptions.IgnoreCase | RegexOptions.Compiled).Matches(TargetText);

在这种情况下,Regex表达式匹配URL值:

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'" + "\"" + ".,<>?«»“”‘’]))

正则表达式本身运行得非常快,但在检查结果时应用程序挂起:

if (matches != null && matches.Count > 0)

如果我拿出计数部分,这个电话会快速通过但后来停留在下一行:

foreach (Match thisMatch in matches)

最常见的罪魁祸首似乎是有0场比赛。那么如何在不遇到这些挂起问题的情况下检查结果呢?

0 个答案:

没有答案