本文分类:
正则表达式

正则表达式的四个通配符:

通配符 含义
? 前导字符出现 0 次或 1 次,即前导字符是可选的
+ 前导字符出现 1 次或多次
* 前导字符出现 0 次或多次
{min, max} 前导字符出现 min 次到 max 次

默认情况下,这个几个特殊字符都是贪婪模式,即会根据前导字符去匹配尽可能多的内容。

在以上字符后加上一个问号则开启懒惰模式,在该模式下,正则引擎尽可能少的重复匹配字符,匹配成功之后它会继续匹配剩余的字符串。

在以上字符后加上一个加号则开启独占模式,同贪婪模式类似,独占模式也会尽可能多的匹配内容,但在独占模式下,正则表达式不会回溯,一旦匹配不成功就会结束匹配。

贪婪 懒惰 独占
X? X?? X?+
X* X*? X*+
X+ X+? X++
X{n} X{n}? X{n}+
X{n,} X{n,}? X{n,}+
X{n,m} X{n,m}? X{n,m}+

一个示例:

String s = "xxyyxxxyxxyxx";  
Pattern greedy = Pattern.compile("xx(.*)xx");  
Pattern reluctant = Pattern.compile("xx(.*?)xx");  
Pattern possessive = Pattern.compile("xx(.*+)xx");

匹配结果

xxyyxxxyxxyxx
xxyyxx
xxyxx
本文来自 [时光记 - 王智超的个人空间](www.hiwzc.com),转载请注明出处。