正则表达式之--贪婪与非贪婪模式详解(概述)

作者:enenba | 发表于:2012-05-20 10:27 | 分类:正则表达式

网上找到的贪婪与非贪婪模式详解,看了这一段基本明白贪婪与非贪婪模式的构成条件:

1. 概述

贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。

属于贪婪模式的量词,也叫做匹配优先量词,包括:

{m,n}”、“{m,}”、“?”、“*”和“+”。

在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括:

{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。

从正则语法的角度来讲,被匹配优先量词修饰的子表达式使用的就是贪婪模式,如“(Expression)+”;被忽略优先量词修饰的子表达式使用的就是非贪婪模式,如“(Expression)+?”。

对于贪婪模式,各种文档的叫法基本一致,但是对于非贪婪模式,有的叫懒惰模式或惰性模式,有的叫勉强模式,其实叫什么无所谓,只要掌握原理和用法,能够运用自如也就是了。个人习惯使用贪婪与非贪婪的叫法,所以文中都会使用这种叫法进行介绍。

上文来自http://blog.csdn.net/lxcnn/article/details/4756030

 

看了以上段文章首先我明白贪婪和非贪婪是什么样的形式,以前我只知道 * 和 + 是贪婪的,*? 和 +?不贪婪了,原来{m,n}、{m}也是贪婪的。贪婪转成非贪婪也非常简单,就是加一个 加个问号在贪婪的后面。总结了,做个笔记吧。

上一篇: 正则表达式解二元方程式   |   下一篇:JS和PHP的正则表达式的区别» 标签: 正则 正则表达式 正则表达式教程 贪婪模式

评论: