java基础巩固系列(十三):java正则表达式中的数量词:Greedy、Reluctant、Possessive
2015-01-19 21:56
316 查看
java中的正则位于java.util.regex包中,这个包中只有一个MatchResult接口和Matcher、Pattern两个类。
正则中的数量词有Greedy (贪婪)、Reluctant(懒惰)和Possessive(强占)三种
Greedy是最常用的,它的匹配方式是先把整个字符串吞下,然后匹配整个字符串,如果不匹配,就从右端吐出一个字符,再进行匹配,直到找到匹配或把整个字符串吐完为止。
因为总是从最大 匹配开始匹配,故称贪婪。
Reluctant正好和Greedy相反,它先从最小匹配开始,先从左端吞入一个字符,然后进行匹配,若不匹配就再吞入一个字符,直到找到匹配或将整个字符串吞入为止。
因为总是从最小匹配开始,故称懒惰。
Possessive和Greedy的匹配方式一样,先把整个字符串吞下,然后匹配整个字符串,如果匹配,就认为匹配,如果不匹配,就认为整个字符串不匹配,它不会从右端吐出一个字符串再进行匹配,只进行一次
因为贪婪但并不聪明,故称强占。
正则中的数量词有Greedy (贪婪)、Reluctant(懒惰)和Possessive(强占)三种
Greedy 数量词 | |
---|---|
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
Matcher m=Pattern.compile("a.*b").matcher("a====b=========b====="); while(m.find()){ <span style="white-space:pre"> </span>System.out.println(m.group()); } 输出:a====b=========b
因为总是从最大 匹配开始匹配,故称贪婪。
Reluctant 数量词 | |
---|---|
X?? | X,一次或一次也没有 |
X*? | X,零次或多次 |
X+? | X,一次或多次 |
X{n}? | X,恰好 n 次 |
X{n,}? | X,至少 n 次 |
X{n,m}? | X,至少 n 次,但是不超过 m 次 |
Matcher m=Pattern.compile("a.*?b").matcher("a====b=========b====="); while(m.find()){ System.out.println(m.group()); } 输出:a====b
因为总是从最小匹配开始,故称懒惰。
Possessive 数量词 | |
---|---|
X?+ | X,一次或一次也没有 |
X*+ | X,零次或多次 |
X++ | X,一次或多次 |
X{n}+ | X,恰好 n 次 |
X{n,}+ | X,至少 n 次 |
X{n,m}+ | X,至少 n 次,但是不超过 m 次 |
Matcher m=Pattern.compile("a.*+b").matcher("a====b=========b====="); while(m.find()){ System.out.println(m.group()); } 输出:
因为贪婪但并不聪明,故称强占。
相关文章推荐
- 总算是明白 java正则表达式 中 Greedy 、Reluctant 、Possessive数量词的区别了
- java 正则表达式Greedy、Reluctant、Possessive的理解
- Java基础系列(十三)正则表达式、日期类
- 【转载】JAVA正则表达式的三种模式的区别-greedy reluctant possessive
- 正则表达式中Greedy、Reluctant、Possessive数量词的区别
- Java中的正则表达式中Greedy,Reluctant和Possessive数量词的区别
- java正则表达式——Greedy、Reluctant和Possessive
- java基础系列----------- 正则表达式
- Java正则中的Greedy、Reluctant 、Possessive
- 正则表达式Greedy、Reluctant、Possessive三种策略的区别
- J2SE基础夯实系列之正则表达式Java
- Java基础巩固--正则表达式
- Java基础学习笔记十三 常用API之正则表达式、Date、DateFormat、Calendar
- Java正则表达中Greedy Reluctant Possessive 的区别
- Java正则表达式 Possessive 数量词的理解
- JAVA基础系列之学习正则表达式
- java夯实基础系列:正则表达式(草稿)
- 2015年11月26日 Java基础系列(六)正则表达式Regex
- 正则表达式:Greedy、Reluctant、Possessive 区别
- J2SE基础夯实系列之正则表达式Java