admin管理员组

文章数量:1558041

//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());

}


转自:点击打开链接

本文标签: 正则表达式JavagreedyPossessiveReluctant