匹配所有非单词边界,同时匹配的非单词边界满足它右边至少有一组3个数字一组的情况,并且不能出现剩余数字
"12345678".replaceAll("\\B(?=(\\d{3})+(?!\\d))", ",") --> 12,345,678
\\B 非单词边界
12345678 能够匹配到的非单词边界共7个(两个数字之间确定一个)
第一次匹配:
当前非单词边界为1和2之间的
因为2345678不满足当前单词右边等于(\\d{3})+ 的情况,进行下一次匹配
第二次匹配:
当前非单词边界为2和3之间的
当前非单词边界右边 345678 满足 至少一组数字的情况,同时无剩余无分组数字 ,所以2 3之前这个非单词边界替换为逗号,进行下一次匹配
第三次匹配:
当前非单词边界为3和4之间的
当前非单词边界右边为 45678,不满足3个数字一组,至少一组的情况
后续同理
。。。。。。
匹配所有非单词边界,同时匹配的非单词边界后边存在至少一组(按3个数字一个分组)数字
"12345678".replaceAll("\\B(?=(\\d{3})+)", ",") --> 1,2,3,4,5,678
匹配所有非单词边界,同时匹配的非单词边界后边存在一组(按3个数字一个分组)数字,同时不会出现剩余一个数字的情况
"12345678".replaceAll("\\B(?=(\\d{3})(?!\\d))", ",") --> 1,2,3,4,,5,678
"12345678".replaceAll("\\B(?=(\\d{3})+(?!\\d))", ",") --> 12,345,678
\\B 非单词边界
12345678 能够匹配到的非单词边界共7个(两个数字之间确定一个)
第一次匹配:
当前非单词边界为1和2之间的
因为2345678不满足当前单词右边等于(\\d{3})+ 的情况,进行下一次匹配
第二次匹配:
当前非单词边界为2和3之间的
当前非单词边界右边 345678 满足 至少一组数字的情况,同时无剩余无分组数字 ,所以2 3之前这个非单词边界替换为逗号,进行下一次匹配
第三次匹配:
当前非单词边界为3和4之间的
当前非单词边界右边为 45678,不满足3个数字一组,至少一组的情况
后续同理
。。。。。。
匹配所有非单词边界,同时匹配的非单词边界后边存在至少一组(按3个数字一个分组)数字
"12345678".replaceAll("\\B(?=(\\d{3})+)", ",") --> 1,2,3,4,5,678
匹配所有非单词边界,同时匹配的非单词边界后边存在一组(按3个数字一个分组)数字,同时不会出现剩余一个数字的情况
"12345678".replaceAll("\\B(?=(\\d{3})(?!\\d))", ",") --> 1,2,3,4,,5,678