当前位置: 代码迷 >> Java Web开发 >> 关于replaceAll,正则为/*轮换结果竟然是.
  详细解决方案

关于replaceAll,正则为/*轮换结果竟然是.

热度:7426   发布时间:2013-02-25 21:17:09.0
关于replaceAll,正则为/*,替换结果竟然是...
Java code
System.out.println("111111".replaceAll("/*", "2"));// 运行结果:2121212121212


也就是说,正则为/*时,replaceAll会将替换字符串插入到目标字符串的每一个空隙里去。。。。


求大神解释!!!!

能分析下replaceAll的源码更好!

------解决方案--------------------------------------------------------
/* 无非表示匹配 0个或者多个/ 很显然没有/存在 所以匹配0个 
匹配的结果就是
Java code
Match 1:             0         0Match 2:             1         0Match 3:             2         0Match 4:             3         0Match 5:             4         0Match 6:             5         0Match 7:             6         0
------解决方案--------------------------------------------------------
字符串“111111”不包含“/”
但正则是“/*”,所以可以匹配到0个“/”,而字符串“111111”包含7个这样的位置,分别是开头、结尾、以及两个1中间的位置,这些位置最后用2来取代了。
正则换成/+结果就不一样了。