admin管理员组

文章数量:1558077

//possessive 输出: 无,“b+“已经匹配了所有11个b,后面再加一个b,也就是12个b,此时就匹配不了了,这个是常人的理解
//即将后面一个b占有了(不具有回溯功能),串中因为没有12个b,所以没有输出
//Matcher matcher = Patternpile("b++b").matcher("aaabbbbbbbbbbbwac");//则可以正常匹配了。


//greedy 输出: bbbbbbbbbbb,“b+“已经匹配了所有11个b,后面再加一个b,也就是12个b,按常理来说是匹配不了了,
//但由于是贪婪式,它会将跟上的那个b扔掉(常说的回溯)去匹配前面的11个b,所以会输出11个b
//这种方式使用得最多,
//Matcher matcher = Patternpile("b+b").matcher("aaabbbbbbbbbbbwac");//则可以正常匹配了。

//reluctant 输出: bb, bb, bb, bb, bb,由于是懒惰式,最少匹配,“b+“最少匹配1个b,后面再加一个b,也就是2个b,
//两个两个的匹配,所以输出5组bb(第11个b匹配不了了),如果改为"b*?b",就会输出11组b
Matcher matcher = Patternpile("b??b").matcher("aaabbbbbbbbbbbwac");//则可以正常匹配了。


while(matcher.find()){
System.out.println(matcher.group());
}


上面的示例代码可以拷贝到main方法里面测一下,
思考,下面各自会输出什么结果:
String inptString = "Never give up! Never surrender!";

//greedy
//Pattern pattern = Patternpile("Never.*!");

//possessive
//Pattern pattern = Patternpile("Never.*+!");

//reluctant
//Pattern pattern = Patternpile("Never.*?!");
Matcher matcher = pattern.matcher(inptString);

本文标签: 正则表达式JavagreedyPossessiveReluctant