孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

      当正则表达式中包含能接受重复的限定符(指定数量的代码,例如*,{5,12}等)时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。如对于一段文本

This is the first line.
This is the second line.
This is the third line.

      用^[\w\W]+$ 匹配会得到整个文本段,由于Regex引擎是贪婪的,它会尽可能的匹配多的选项,知道匹配完。

     有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。如同样用上面一段文本,用^[\w\W]+?$模式进行匹配,匹配到第一个马上返回,不再继续进行查找,所以得到结果:

     This is the first line.

     

posted on 2011-06-13 20:30  孤独的猫  阅读(4596)  评论(0编辑  收藏  举报