java中的正則位于java.util.regex包中,這個(gè)包中只有一個(gè)MatchResult接口和Matcher、Pattern兩個(gè)類(lèi)。
正則中的數量詞有Greedy (貪婪)、Reluctant(懶惰)和Possessive(強占)三種
| Greedy 數量詞 | |
|---|---|
| X? | X,一次或一次也沒(méi)有 |
| X* | X,零次或多次 |
| X+ | X,一次或多次 |
| X{n} | X,恰好 n 次 |
| X{n,} | X,至少 n 次 |
| X{n,m} | X,至少 n 次,但是不超過(guò) m 次 |
Greedy是最常用的,它的匹配方式是先把整個(gè)字符串吞下,然后匹配整個(gè)字符串,如果不匹配,就從右端吐出一個(gè)字符,再進(jìn)行匹配,直到找到匹配或把整個(gè)字符串吐完為止。
因為總是從最大 匹配開(kāi)始匹配,故稱(chēng)貪婪。
| Reluctant 數量詞 | |
|---|---|
| X?? | X,一次或一次也沒(méi)有 |
| X*? | X,零次或多次 |
| X+? | X,一次或多次 |
| X{n}? | X,恰好 n 次 |
| X{n,}? | X,至少 n 次 |
| X{n,m}? | X,至少 n 次,但是不超過(guò) m 次 |
Reluctant正好和Greedy相反,它先從最小匹配開(kāi)始,先從左端吞入一個(gè)字符,然后進(jìn)行匹配,若不匹配就再吞入一個(gè)字符,直到找到匹配或將整個(gè)字符串吞入為止。
因為總是從最小匹配開(kāi)始,故稱(chēng)懶惰。
| Possessive 數量詞 | |
|---|---|
| X?+ | X,一次或一次也沒(méi)有 |
| X*+ | X,零次或多次 |
| X++ | X,一次或多次 |
| X{n}+ | X,恰好 n 次 |
| X{n,}+ | X,至少 n 次 |
| X{n,m}+ | X,至少 n 次,但是不超過(guò) m 次 |
Possessive和Greedy的匹配方式一樣,先把整個(gè)字符串吞下,然后匹配整個(gè)字符串,如果匹配,就認為匹配,如果不匹配,就認為整個(gè)字符串不匹配,它不會(huì )從右端吐出一個(gè)字符串再進(jìn)行匹配,只進(jìn)行一次
因為貪婪但并不聰明,故稱(chēng)強占。
聯(lián)系客服