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 次例如 X?? X,一次或一次也没有 为什么这样代表呢。?号不是代表的是一个字符吗?两个??为什么就成了一次或一次也没有了。再给我说说如果按它上面说的应怎么使用呢?
aaaax?bbbbb ? 限定 'x' 出现1次或0次 可匹配 "aaaaxbbbbb" 也可匹配 "aaaabbbbb"--------------------------------aaaax*bbbbb * 限定 'x' 出现任意次 可匹配 "aaaabbbbb" 也可匹配 "aaaaxxxxxbbbbb" 也可匹配 "aaaaxxxxxxxxxxxxxxxbbbbb" 多少个 x 都行--------------------------------aaaax+bbbbb + 限定 'x' 出现1次或1次以上 可匹配 "aaaaxbbbbb" 也可匹配"aaaaxxxxxbbbbb" 也可匹配"aaaaxxxxxxxxxxxxbbbbb"多少个 x 都行,就不能没有 'x'--------------------------------aaaax{3}bbbbb {3} 限定 'x' 出现3次或3次以上 可匹配 "aaaaxxxbbbbb"--------------------------------aaaax{3,}bbbbb {3,} 限定 'x' 出现3次 可匹配 "aaaaxxxbbbbb" 也可匹配"aaaaxxxxxbbbbb" 也可匹配"aaaaxxxxxxxxxxxxbbbbb"多少个 x 都行,就不能小于3次--------------------------------aaaax{3,5}bbbbb {3,5} 限定 'x' 出现3次至5次 可匹配 "aaaaxxxbbbbb" 也可匹配"aaaaxxxxxbbbbb" 也可匹配"aaaaxxxxbbbbb" 不能小于3次,不能大于5次----------------------------------------------------------------------------------------------------------------------------------------------------------------相信楼主能明白 ?, +, *, {n}, {n,}, {n,m} 的意思了如果在限定符后边再加上一个 ?变成 ??, +?, *?, {n}?, {n,}?, {n,m}?那么它就是懒惰模式不加的就是贪婪模式比如有 原文: "----------AzzzzzzzzzzzzAxxxxxxxxxxA--------"那么 表达式 "A\w*A" 会匹配 "AzzzzzzzzzzzzAxxxxxxxxxxA" 这部分那么 表达式 "A\w*?A" 会匹配 "AzzzzzzzzzzzzA" 这部分贪梦模式, 尽可能多的匹配懒惰模式, 尽可能少的匹配
问号是说,前面的那个字符,出现0次或1次。X??,第二个问号是非贪婪匹配的意思,就是说,可以匹配多次,也可以匹配少次的时候,只匹配少次。import java.util.regex.Matcher;import java.util.regex.Pattern;import org.w3c.dom.NodeList;public class RegTeest { public static void main(String[] args) { String s = "123good456"; Pattern pattern = Pattern.compile("goo??"); Matcher matcher = pattern.matcher(s); while(matcher.find()){ System.out.println("|" + matcher.group() + "|"); } }}结果是|go|如果用一个问号,结果是|goo|