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

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

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

时间: 2024-10-07 07:18:05

正则表达式默认是贪婪模式的相关文章

正则表达式中的贪婪模式与非贪婪模式详解

1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配.非贪婪模式只被部分NFA引擎所支持. 属于贪婪模式的量词,也叫做匹配优先量词,包括: “{m,n}”.“{m,}”.“?”.“*”和“+”. 在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括: “{m,n}?”.“{m,}?”.“??”.“*?”和“+?”.

JavaScript正则表达式模式匹配(3)——贪婪模式和惰性模式

1 var pattern=/[a-z]+/; //这里使用了贪婪模式, 2 var str='abcdefg'; 3 alert(str.replace(pattern,'1')); //所有的字符串变成了1 4 5 var pattern=/[a-z]+?/; //这里使用了惰性模式, 6 var str='abcdefg'; 7 alert(str.replace(pattern,'1')); //只有第一个字符变成了1,后面没有匹配 8 9 var pattern=/[a-z]+?/;

正则表达式贪婪与非贪婪模式

之前做程序的时候看到过正则表达式的贪婪与非贪婪模式,今天用的时候就想不起来了,现在这里总结一下,以备自己以后用到注意. 1.什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab*c"; 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配.如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c). 非贪婪匹配:就是匹配到结果就好,就少的匹配字符.如上面使用模式p匹配字符串str,结果

【转】正则表达式贪婪与非贪婪模式

转自:http://www.cnblogs.com/xudong-bupt/p/3586889.html 正则表达式贪婪与非贪婪模式 之前做程序的时候看到过正则表达式的贪婪与非贪婪模式,今天用的时候就想不起来了,现在这里总结一下,以备自己以后用到注意. 1.什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab*c"; 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配.如上面使用模式p匹配字符串st

python正则表达式贪婪与非贪婪模式

之前做程序的时候看到过正则表达式的贪婪与非贪婪模式,今天用的时候就想不起来了,现在这里总结一下,以备自己以后用到注意. 1.什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab.*c"; 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配.如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab.*c). 非贪婪匹配:就是匹配到结果就好,最少的匹配字符.如上面使用模式p匹配字符串str,

正则表达式之贪婪模式

首先需要明确一点,正则默认就是贪婪模式,何为贪婪模式? 就是在满足条件的前提下,尽可能多的进行匹配. 下面先来个例子 s ='my tel number is 132-4567-1258' r = re.match(r'(.+)(\d+-\d+-\d+)',s) print(r.groups()) # ('my tel number is 13', '2-4567-1258') ''' 结查分析: .+ : 表示任意字符匹配一次或者多次 \d+-\d+-\d+ : 1个数字或者多个数字,然后横线

贪婪模式与非贪婪模式

一.概念 1.什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab*c"; 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配.如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c). 非贪婪匹配:就是匹配到结果就好,就少的匹配字符.如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c). 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式

正则表达式第三回--模式、分组与前瞻

贪婪的正则 正则是默认贪婪的,它会尽可能多的匹配,我想这是一个大家都知道的事实. 经典例子: '12345678'.replace(/\d{3,7}/g, '#') // 输出: #8 可以看到,规则是匹配3~7个数字,由于正则默认是贪婪模式,匹配了最大数量7个: 如果我们希望它尽可能少的匹配,也就是说一旦匹配成功就不继续匹配了,只需要在量词后面加个问号即可. '12345678'.replace(/\d{3,7}?/g, '#') // 输出: ##78 分组 我们知道,量词是作用于紧挨着它的

正则表达式的三种模式【贪婪、勉强、侵占】的分析

假定要分析的字符串是xfooxxxxxxfoo 模式.*foo (贪婪模式): 模式分为子模式p1(.*)和子模式p2(foo)两个部分. 其中p1中的量词匹配方式使用默认方式(贪婪型). 匹配开始时,吃入所有字符xfooxxxxxx去匹配子模式p1.匹配成功,但这样以来就没有了字符串去匹配子模式p2.本轮匹配失败:第二轮:减少p1部分的匹配量,吐出最后一个字符, 把字符串分割成xfooxxxxxxfo和o两个子字符串s1和s2. s1匹配p1, 但s2不匹配p2.本轮匹配失败:第三轮,再次减少