2008年5月10日星期六

构造正则表达式匹配以abc开头和结尾的最小字符串

构造正则表达式来匹配以abc开头又以abc结尾最小的字符串?
例如字符串abc1abc_ab_abc2abc, 第一次将会匹配出abc1abc, 而不是abc1abc_ab_abc, 也不是abc1abc_ab_abc2abc, 第二次就会匹配出abc2abc。

abc.*?abc

*表示匹配0个或多个字符,是贪婪的(Greedy),即尽可能多地匹配字符,.*表示尽可能多地匹配非\r\n的字符

*?称为是懒惰的星号,即尽可能少地匹配字符,马上会去检测后面的字符是否满足.*?后的模式,如果不满足,则回溯;一旦后面的字符串满足模式abc,则马上停止了

类似的有 + 和 +?。+表示匹配1个或多个字符,是贪婪的;+?是懒惰的,在匹配一个字符之后会去检测后面的字符是否满足.+?后的模式,如果不满足,则回溯

1 条评论:

  1. 正则表达式,老是记不住,总是记了忘,忘了再记。

    回复删除