码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式默认是贪婪模式

时间:2014-12-31 21:29:18      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

regex的
---------------------
正则表达式默认是贪婪模式,优先级|不高 没有^高
因为.+要尽可能多的匹配。所以会认为1111。1 1。 111。111111。都是.+匹配的结果,但是由于正则表达式中最后还有一个 : 。 ,所以如果要是将.+匹配了所有的字符,则最后的 。 (句号)无法找到匹配,正则表达式会尽可能的找到匹配,所以会将 。(句号)尝试给正则表达式中的最后一个字符(句号)来匹配,然后把前面的所有字符都用.+;来匹配。
---------------------
?功能是可有可无那个字符串
二。终结贪婪模式
按最小的匹配
-----------
当正则表达式提取的时候,如果一个字符也能匹配,多个也能匹配,
使用最多的字符的方式进行匹配。这个就叫做贪婪模式
--------------
正则表达式还可以用来进行字符串提取
Match match = Regex.Match("age=30",
@"^(.+)=(.+)$");
if (match.Success)
{

Console.WriteLine(match.Groups[1] .Value);

Console.WriteLine(match.Groups[2] .Value);
}

match的Success属性表示是否匹配成功;正则表达式中用()将要提取的内容括起来,然后就可以通过Match的Groups属性来得到所有的提取元素,注意Groups的序号是从1开始的,0有特殊含义。 foreach (Match match in mc)
{
#region MyRegion
//match.Groups[0].Value中存储的值遇match.Value中存储的值是一样的
//表示提取到的Email的完整字符串
//match.Value
//Console.WriteLine(match.Value);
//switch (match.Groups[2].Value)
//{
// default:
//}
第0组是全部的名称
第二组是第一个小括号
以此类推
Console.WriteLine(match.Groups[0].Value);
Console.WriteLine(match.Groups[1].Value);
Console.WriteLine(match.Groups[2].Value);
Console.WriteLine(match.Groups[3].Value);
#endregion
#region MyRegion

/
}
---------------------------

正则表达式默认是贪婪模式

标签:

原文地址:http://www.cnblogs.com/MyKingDragon/p/4196530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!