先看两端代码:
-
String s = "/m/t/wd/nl/n/p/m/wd/nl/n/p/m/wd/nl/n/p/m/v/n";
-
Pattern p = Pattern.compile("/m/t.*/nl/n/p/m");
-
Matcher m = p.matcher(s);
-
while(m.find()) {
-
System.out.println(m.group());
-
System.out.println(m.start());
-
System.out.println(m.end());
-
}
-
运行结果:
-
/m/t/wd/nl/n/p/m/wd/nl/n/p/m/wd/nl/n/p/m
-
0
-
40
-
String s = "/m/t/wd/nl/n/p/m/wd/nl/n/p/m/wd/nl/n/p/m/v/n";
-
Pattern p = Pattern.compile("/m/t.*?/nl/n/p/m");
-
Matcher m = p.matcher(s);
-
while(m.find()) {
-
System.out.println(m.group());
-
System.out.println(m.start());
-
System.out.println(m.end());
-
}
-
运行结果:
-
/m/t/wd/nl/n/p/m/wd/nl/n/p/m/wd/nl/n/p/m
-
0
-
40
只是在.*后加了一个“?”, 结果就大不一样了。 可以这样说,如果想贪婪匹配,用.*, 如果想勉强匹配,就用.*?。
阅读(1011) | 评论(0) | 转发(0) |