@Test
public void method2(){
Pattern pt1=Pattern.compile("\\d{2}[a-z]{2,3}");
Pattern pt2=Pattern.compile("\\d{2}?[a-z]{2,3}?");
Pattern pt3=Pattern.compile("1{2,3}+");
String str="1111sada1--";
Matcher mc1=pt1.matcher(str);
Matcher mc2=pt2.matcher(str);
Matcher mc3=pt3.matcher(str);
System.out.println(mc1.find()+" "+mc1.group());
System.out.println(mc2.find()+" "+mc2.group());
System.out.println(mc3.find()+" "+mc3.group());
System.out.println("\\\\");
}输出结果:
true 11sad
true 11sa
true 111
\\
第三行结果有点不懂
不应该是false的吗
possessive不是先读取全部,然后匹配一次,应该不会成功的啊
public void method2(){
Pattern pt1=Pattern.compile("\\d{2}[a-z]{2,3}");
Pattern pt2=Pattern.compile("\\d{2}?[a-z]{2,3}?");
Pattern pt3=Pattern.compile("1{2,3}+");
String str="1111sada1--";
Matcher mc1=pt1.matcher(str);
Matcher mc2=pt2.matcher(str);
Matcher mc3=pt3.matcher(str);
System.out.println(mc1.find()+" "+mc1.group());
System.out.println(mc2.find()+" "+mc2.group());
System.out.println(mc3.find()+" "+mc3.group());
System.out.println("\\\\");
}输出结果:
true 11sad
true 11sa
true 111
\\
第三行结果有点不懂
不应该是false的吗
possessive不是先读取全部,然后匹配一次,应该不会成功的啊
解决方案 »
- 空指针异常,? - -#
- Class、Class<?>以及Class<T>
- 我想做一个按钮是 一个图片的形状 然后把图片放到上面去 怎么做啊?
- String a="a";和String a=new String("a");的区别是什么?
- 请问在Java中如何得知某个TCP端口是否已经绑定到某个服务?
- Java application如何访问Cookie
- 关于JAVA的几个问题
- Oracle排序分页的SQL语句问题
- 通过bat运行Application如何去掉DOS窗口?
- 新手想了很久 不知道怎么用一个数组接收下面遍历算出来的元素
- socket乱码问题,求教,新手学socket
- swing中网格合并
X{n,m}+ X,至少 n 次,但是不超过 m 次 •Possessive 数量词,它可以尽可能多地进行匹配,即使这样做导致所有匹配都成功时也如此。 这样怎么会找不到3个1呢
2个数字2个字母 11sa[a-z]{2,3}? 带?是勉强型 这个量词匹配满足模式所需的最少字符数 Pattern pt3=Pattern.compile("1{2,3}+");
+ 占有型 至少 n 次,但是不超过 m 次 出现大于3显示3次
Pattern pt1=Pattern.compile("\\w{2,5}s");
Pattern pt2=Pattern.compile("\\w{2,5}+s");
String str="1111sada1--";
Matcher mc1=pt1.matcher(str);
Matcher mc2=pt2.matcher(str);
System.out.println(mc1.find() + ":::" + mc1.group());
System.out.println(mc2.find());
}先输出true然后是false
因为possessive的时候\\w{2,5}+会匹配前面5个字符,类似于贪婪的,但是当第六个字符不是s的时候,发现错误,他并不会回溯,所以就会是false。
http://jiake.iteye.com/blog/182095