String s = "vddfffggggg";
 Pattern p = Pattern.compile("(.)\\1+");这个\\1+ 是什么意思?
\\是什么\\2 可不可以不知道什么意思 ?

解决方案 »

  1.   

    是匹配第一个相同的,你应该是要得到ddfffgggg这种吧如果换到\\2就是第2组相同的了。
      

  2.   

    实在不明白的话,自己运行一下,看看结果输入的可以是vddfffggggg或者
    ddfffggggg这样的。
      

  3.   

    当用()定义了一个正则表达式组后,正则引擎则会把被匹配的组按照顺序编号,存入缓存。我们可以通过“\数字”的方式进行引用已经存入缓存的组。\1引用第一个匹配的组,\2引用第二个组,以此类推。
    那么这个例子就很简单了。
    .首先代码任意的字符,并且放入在组中,那么整体的意思就是匹配了任意一个字符后,然后又引用了这个相同的字符的多个。说白了就是匹配至少2个相同字符的元素。String s = "vddfffggggg";
          Pattern p = Pattern.compile("(.)\\1+");
          Matcher m=p.matcher(s);
          while(m.find())
          System.out.println(m.group());这样应该输出
    dd
    fff
    ggggg
    如果将+改为*的话,那么就应该输出
    v
    dd
    fff
    ggggg