注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

kangzye的博客

加Q群25382780切磋java,加19360923群研究JavaScript

 
 
 

日志

 
 

正则表达式之量词Greedy,Reluctant,Possessive  

2010-07-15 11:10:30|  分类: 正则表达式 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
   

量词:量即为数量,意为多少次,由 * + ? {n}组合表示

Greedy 数量词

  X?   X,一次或一次也没有

  X*   X,零次或多次

  X+   X,一次或多次

  X{n}  X,恰好 n 次

  X{n,}   X,至少 n 次

  X{n,m}  X,至少 n 次,但是不超过 m 次

Reluctant 数量词

X??   X,一次或一次也没有

X*?   X,零次或多次

X+?   X,一次或多次

X{n}?   X,恰好 n 次

X{n,}?   X,至少 n 次

X{n,m}?   X,至少 n 次,但是不超过 m 次

Possessive 数量词

X?+   X,一次或一次也没有

X*+   X,零次或多次

X++   X,一次或多次

X{n}+   X,恰好 n 次

X{n,}+   X,至少 n 次

X{n,m}+   X,至少 n 次,但是不超过 m 次


?Greedy,Reluctant,Possessive的区别在于:(注意仅限于进行.等模糊处理时)
?greedy ['gri:di]量词被看作“贪婪的”,因为它第一次就读入整个被模糊匹配的字符串。如果第一个匹配尝试(整个输入字符串)失败,匹配器就会在被匹配字符串中的最后一位后退一个字符并且再次尝试,重复这个过程,直到找到匹配或者没有更多剩下的字符可以后退为止。根据表达式中使用的量词,它最后试图匹配的内容是1 个或者0个字符。
?但是,reluctant [ri'l?kt?nt]量词采取相反的方式:它们从被匹配字符串的开头开始,然后逐步地一次读取一个字符搜索匹配。它们最后试图匹配的内容是整个输入字符串。
?最后,possessive [p?‘zesiv]量词和greedy一样也是尽可能多的匹配,但和greedy量词不同,possessive匹配上了就不吐了,从不后退(不回溯)。

 Eg:  字符串: aaabbbbbbbbbbbwac,使用b*+(bb)查找,找不到匹配,因为不可回溯。因为b*+匹配尽可能多的b字符,于是把全部b都匹配上了,当遇到w时,b*+的匹配结束,开始匹配(bb),但与w不匹配,但其被b*+匹配的内容却又不回溯,不后退,于是整个匹配结束,结果未匹配成功。 possesive 性能高些。

  评论这张
 
阅读(1997)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017