日期:2014-05-18  浏览次数:20845 次

请问,这样的正则表达式,怎么写?
比如,一个正则表达式的匹配结果有5000个,
怎样使得在匹配到第3个的时候,就停止匹配,因为,我只需要前三个匹配结果,后面的匹配都是无用的,影响效率
如果是在最后的5000个匹配结果集合中去取的话,效率低下。

------解决方案--------------------
可以这样:
C# code
        Match match = Regex.Match("12ab34de567ab890", @"\d+");
        for (int i = 0; i < 3; i++)
        {
            if (match.Success)
            {
                Response.Write(match.Value + "<br/>");
                match = match.NextMatch();
            }
        }

------解决方案--------------------
"Replace(String, MatchEvaluator, Int32) 在指定的输入字符串内,使用 MatchEvaluator 委托返回的字符串替换与某个正则表达式模式匹配的字符串(其数目为指定的最大数目)。"

以上是msdn的内容.
你可以利用MatchEvaluator这个匿名方法里的参数(实际就是匹配到的内容)做你想做的事.然后别替换就是了.
------解决方案--------------------

不知道LZ是不是下面这个意思

http://msdn.microsoft.com/zh-cn/library/h09aybcd.aspx