本帖最后由 张飞年 于 2012-10-9 01:40 编辑
我想应该是这样理解吧:首先0*是大于等于零个0;(.)被表示的序号为1,$1就代表()内的内容;\d+是表示一个或者多个数字;
str = "00192.0068.001.00254";
str=str.replaceAll("0*(\\d{3})","$1");//这句的意思应该是将符合 0*(\\d{3}) 的字符串替换为 $1 ,这里的 0*(\\d{3}) 表示的是一个前面任意多个0,后面紧跟一组由3个数字的字符串(这3个字符串被 成组为1号组),$1表示当前正则中第一组括号中的内容,所以在这里会将类似000000192等替换为最后3个字符组成的字符串,有带点强制的意味,大点说就是把一个大串替换成了单独成组的那一串。
str=str.replaceAll("0*(\\d+)","$1");//这儿与上面唯一不同的就是把{3}换成了+,我想这 0*(\\d+) 的意思是前面任意多个单个0组成的字符串,再跟一组 由任意多个数字组成的一组字符串(\d里包括0),替换时将前字符串替换为组中的字符串,如果恰好组中最前面是0,那么组中的0就跟随了0*,所以最后的结果是替换成了 去零开头的组中字符串。
==========================================
说的有点像绕口令,哈哈
|