//possessive 输出: 无,“b+“已经匹配了所有11个b,后面再加一个b,也就是12个b,此时就匹配不了了,这个是常人的理解admin管理员组文章数量:1558077
//即将后面一个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
版权声明:本文标题:java正则表达式Greedy、Reluctant、Possessive的深入理解 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727309767a1107603.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论