资讯详情

Java数量修饰词的理解 java资讯

2017-05-11 阅读:122 来源:福州博洋软件开发与测试培训学校
进入>

正则表达式对于数量限定符如?,+,*,{n,m}的匹配默认是贪婪模式,比如:

a.*b匹配acbab的结果是acbab而不是acb

正则表达式支持懒惰模式,也就是在数量限定符后加一个数量修饰词(quantifier),用问号表示,比如:

a.*?b匹配acbab的结果是acb而不是acbab2cto

而语言在正则表达式中支持一种Possessive数量修饰词,用加号表示。其字面意思是像贪婪模式一样匹配,但不回溯。这到底是什么意思呢?其实这和匹配算法相关,比如:

在贪婪模式下,正则表达式a.*b在匹配acbac时,在匹配成功第一个字符a后,匹配算法会继续往后读取字符a之后的字符来匹配.*,这时贪婪模式就起作用了,a后面的cbac都能匹配.*,但当匹配算法继续往后读取字符时,发现已经没有字符可读了,无法匹配正则表达式中的b了,于是就回溯一个字符,看c是否能匹配b,不能,继续回溯,直到回溯到b时,才匹配到了acb。而a.*+b在匹配时是不会回溯的,也就是说当贪婪地读到最后一个字符时发现无有字符与b匹配了,就认为匹配失败了。

再举几个例子

(ab)*+a匹配ababacd时可以匹配到ababa,因为两个ab之后没有ab了,无法贪婪

a?+a匹配aaaaa时会匹配到aa,但a++a和a{0,10}+a却会匹配失败

博洋教育今日就业明星:王荣生福建三元达软件有限公司担任java工程师

王荣生:福建信息职业技术学院软件工程专业,大专学历。在博洋教育参加java软件项目实训,该生学习态度端正,有比较好的学习心态,会主动请教老师同学。毕业后经过就业部老师的推荐,现在成功入职福建三元达软件有限公司。

班级名称

CN1305脱产班

班级性质

脱产班

开班时间

2013年8月12日

上课地点

 

上课方式

脱产

目前状态

热招

加载全文

免责声明:本站部分内容、图片来自用户自主上传,如果您对本站信息资源版权的归属问题存有异议,请您致信,我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。

以上是福州博洋软件开发与测试培训学校为大家整理的有关Java数量修饰词的理解 java资讯的全部内容,更多精彩请访问学习资讯新闻专栏。

相关课程

更多>
2020猎学网广告栏
申请课程免费试听名额

课程顾问24小时内联系您

你好

顾问将于24小时内联系您!

确定
在线咨询 微信咨询 立即报名
申请1对1课程顾问咨询服务
×
你好

顾问将于24小时内联系您!

确定
福州猎学网 >福州博洋软件开发与测试培训学校 >Java数量修饰词的理解 java资讯