黑马程序员技术交流社区

标题: 正则表达式replaceAll时遇到一个问题 [打印本页]

作者: Beautiful    时间: 2013-2-13 19:42
标题: 正则表达式replaceAll时遇到一个问题
本帖最后由 戴俊毅 于 2013-2-13 19:53 编辑

郁闷不用解决了,写半天视频往下看是居然讲到了这个,我还子各种百度{:soso_e127:}

先看下代码吧
public class StringDemo {
public static void main(String[] args){
//我是要替换叠字了的地方
  replaceAllDemo("faffagaeggddbbdeeee", "(.)\\1+","#");
  replaceAllDemo("faffagaeggddbbdeeee", "(.)\\1+","&");
  replaceAllDemo("faffagaeggddbbdeeee", "(.)\\1+","$1");
  replaceAllDemo("faffagaeggddbbdeeee", "(.)\\1+","$2");
}
public static void replaceAllDemo(String str,String reg,String newStr){
  str = str.replaceAll(reg, newStr);
  System.out.println(str);
  return;
}
运行结果为什么会出现这种结果这个$有特别含义么,其他的#和&都能替换掉,而$却替换不来,而我在后面加一个数字1居然保留了一个f额,有这样的用法么,查了下资料也没查到,知道的讲解一下,谢谢了。



作者: Rancho_Gump    时间: 2013-2-13 20:24
问题是不是已经自己解决了啊,看你的帖子是已解决。
$1 指的是 (.)   因为只有一组,所以$2报错
(.)\\1+代表任意多个重复字母,(.)代表任意一个字符,"(.)\\1+","$1"是将多个重复字符替换成一个

作者: Beautiful    时间: 2013-2-13 22:31
张向辉 发表于 2013-2-13 20:24
问题是不是已经自己解决了啊,看你的帖子是已解决。
$1 指的是 (.)   因为只有一组,所以$2报错
(.)\\1+代 ...

嘿嘿谢谢 是已经自己解决了,因为那视频里下面讲解到了,而我刚好没看,看一半自己在练习写代码,结果整出这么个问题来,各种百度然后,写完问题继续看视频,结果后面讲到了,所以就来修改解决了呵呵




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2