System.out.println("123456789012345".replaceAll("\\d{0}(?!$)", "$0 "));
字 符 串 用正则表达式在 每 个 字 符 后 添 加 空 格。
\d{4}代表连续4个数字X(?!Y)代表X后面不能出现Y,但是并不消耗Y例如Windows(?!XP)可以匹配Windows98,Windows2000中的Windows,但不匹配WindowsXP中的Windows\d{4}(?!$)代表连续4个数字,但如果第四个后面紧跟着结束(行末$),则不匹配。replaceAll进行正则替换从左到右,每4个数字匹配,成为一个捕获组,replaceAll后面第二个参数使用反向引用,$0代表整个捕获组,"1234567890123456".replaceAll("\\d{4}(?!$)")1234匹配\d{4},且后面扫描到5,不是行末,因此1234被匹配,此时$0=1234,将其替换为1234_,接着继续,此时从5开始,因为之前(?!X)并不消耗5。继续匹配5678,并检测9不是行末,此时$0=5678,将其替换为5678_,再从9开始,以此类推
http://club.itqun.net/showtopic-151247.html