欢迎来到天天文库
浏览记录
ID:9034406
大小:82.50 KB
页数:14页
时间:2018-04-15
《正则基础之——贪婪与非贪婪模式》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、正则基础之——贪婪与非贪婪模式1概述贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。属于贪婪模式的量词,也叫做匹配优先量词,包括:“{m,n}”、“{m,}”、“?”、“*”和“+”。在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括:“{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。从
2、正则语法的角度来讲,被匹配优先量词修饰的子表达式使用的就是贪婪模式,如“(Expression)+”;被忽略优先量词修饰的子表达式使用的就是非贪婪模式,如“(Expression)+?”。对于贪婪模式,各种文档的叫法基本一致,但是对于非贪婪模式,有的叫懒惰模式或惰性模式,有的叫勉强模式,其实叫什么无所谓,只要掌握原理和用法,能够运用自如也就是了。个人习惯使用贪婪与非贪婪的叫法,所以文中都会使用这种叫法进行介绍。2贪婪与非贪婪模式匹配原理对于贪婪与非贪婪模式,可以从应用和原理两个角度进行理解,但如果想真正掌握,还是
3、要从匹配原理来理解的。先从应用的角度,回答一下“什么是贪婪与非贪婪模式?”2.1从应用角度分析贪婪与非贪婪模式2.1.1什么是贪婪与非贪婪模式先看一个例子举例:源字符串:aa
4、达式一采用的是贪婪模式,在匹配到第一个“
5、看到想要的,有多少就捡多少,除非再也没有想要的了。正则表达式二采用的是非贪婪模式,在匹配到第一个“
6、“整个表达式匹配成功”,为什么要强调这个前提,我们看下下面的例子。正则表达式三:
7、为“
8、>”仍然是匹配到“
此文档下载收益归作者所有