|
1、Java 正则表达式中的Quantifiers(量词)使用来指定匹配字符出现的次数的,java api中有三种Quantifiers: greedy, reluctant, and possessive。虽然三种quantifiers的作用很相似(见下表),但是三者还是有区别的。(摘自java.sun.com)
| Quantifiers | ?Meaning | |
?Greedy |
?Reluctant |
?Possessive |
?X? |
?X?? |
?X?+ |
?X, once or not at all |
?X* |
?X*? |
?X*+ |
?X, zero or more times |
?X+ |
?X+? |
?X++ |
?X, one or more times |
?X{n} |
?X{n}? |
?X{n}+ |
?X, exactly n times |
?X{n,} |
?X{n,}? |
?X{n,}+ |
?X, at least n times |
?X{n,m} |
?X{n,m}? |
?X{n,m}+ |
?X, at least n but not
more than m times |
2、几个例子(摘自 java.sun.com)
 greedy quantifiers Enter?your?regex:?a? Enter?input?string?to?search:? I?found?the?text?""?starting?at?index?0?and?ending?at?index?0.
Enter?your?regex:?a* Enter?input?string?to?search:? I?found?the?text?""?starting?at?index?0?and?ending?at?index?0.
Enter?your?regex:?a+ Enter?input?string?to?search:? No?match?found. Zero-Length Matches (1) Enter?your?regex:?a? Enter?input?string?to?search:?a I?found?the?text?"a"?starting?at?index?0?and?ending?at?index?1. I?found?the?text?""?starting?at?index?1?and?ending?at?index?1.
Enter?your?regex:?a* Enter?input?string?to?search:?a I?found?the?text?"a"?starting?at?index?0?and?ending?at?index?1. I?found?the?text?""?starting?at?index?1?and?ending?at?index?1.
Enter?your?regex:?a+ Enter?input?string?to?search:?a I?found?the?text?"a"?starting?at?index?0?and?ending?at?index?1. Zero-Length Matches (2) Enter?your?regex:?a? Enter?input?string?to?search:?aaaaa I?found?the?text?"a"?starting?at?index?0?and?ending?at?index?1. I?found?the?text?"a"?starting?at?index?1?and?ending?at?index?2. I?found?the?text?"a"?starting?at?index?2?and?ending?at?index?3. I?found?the?text?"a"?starting?at?index?3?and?ending?at?index?4. I?found?the?text?"a"?starting?at?index?4?and?ending?at?index?5. I?found?the?text?""?starting?at?index?5?and?ending?at?index?5.
Enter?your?regex:?a* Enter?input?string?to?search:?aaaaa I?found?the?text?"aaaaa"?starting?at?index?0?and?ending?at?index?5. I?found?the?text?""?starting?at?index?5?and?ending?at?index?5.
Enter?your?regex:?a+ Enter?input?string?to?search:?aaaaa I?found?the?text?"aaaaa"?starting?at?index?0?and?ending?at?index?5. Zero-Length Matches (3) Enter?your?regex:?a? Enter?input?string?to?search:?ababaaaab I?found?the?text?"a"?starting?at?index?0?and?ending?at?index?1. I?found?the?text?""?starting?at?index?1?and?ending?at?index?1. I?found?the?text?"a"?starting?at?index?2?and?ending?at?index?3. I?found?the?text?""?starting?at?index?3?and?ending?at?index?3. I?found?the?text?"a"?starting?at?index?4?and?ending?at?index?5. I?found?the?text?"a"?starting?at?index?5?and?ending?at?index?6. I?found?the?text?"a"?starting?at?index?6?and?ending?at?index?7. I?found?the?text?"a"?starting?at?index?7?and?ending?at?index?8. I?found?the?text?""?starting?at?index?8?and?ending?at?index?8. I?found?the?text?""?starting?at?index?9?and?ending?at?index?9.
Enter?your?regex:?a* Enter?input?string?to?search:?ababaaaab I?found?the?text?"a"?starting?at?index?0?and?ending?at?index?1. I?found?the?text?""?starting?at?index?1?and?ending?at?index?1. I?found?the?text?"a"?starting?at?index?2?and?ending?at?index?3. I?found?the?text?""?starting?at?index?3?and?ending?at?index?3. I?found?the?text?"aaaa"?starting?at?index?4?and?ending?at?index?8. I?found?the?text?""?starting?at?index?8?and?ending?at?index?8. I?found?the?text?""?starting?at?index?9?and?ending?at?index?9.
Enter?your?regex:?a+ Enter?input?string?to?search:?ababaaaab I?found?the?text?"a"?starting?at?index?0?and?ending?at?index?1. I?found?the?text?"a"?starting?at?index?2?and?ending?at?index?3. I?found?the?text?"aaaa"?starting?at?index?4?and?ending?at?index?8. exactly n number of times Enter?your?regex:?a{3} Enter?input?string?to?search:?aa No?match?found.
Enter?your?regex:?a{3} Enter?input?string?to?search:?aaa I?found?the?text?"aaa"?starting?at?index?0?and?ending?at?index?3.
Enter?your?regex:?a{3} Enter?input?string?to?search:?aaaa I?found?the?text?"aaa"?starting?at?index?0?and?ending?at?index?3. at least n times Enter?your?regex:?a{3,} Enter?input?string?to?search:?aaaaaaaaa I?found?the?text?"aaaaaaaaa"?starting?at?index?0?and?ending?at?index?9. an upper limit Enter?your?regex:?a{3,6}?//?find?at?least?3?(but?no?more?than?6)?a's?in?a?row Enter?input?string?to?search:?aaaaaaaaa I?found?the?text?"aaaaaa"?starting?at?index?0?and?ending?at?index?6. I?found?the?text?"aaa"?starting?at?index?6?and?ending?at?index?9.

|