在JAVA中使用正则表达式替换重复的字母

在JAVA中使用正则表达式替换重复的字母,java,regex,Java,Regex,假设我有一个字符串,如: String s = "hellllooooo howwwwwww areeeeeee youuuuuuu"; 我想丢弃重复的字母,并想得到: "helloo howw aree youu" 我已使用以下命令完成匹配: matches(".*([a-z])\\1{3,}.*" 但是如何将Hellooo替换为Hellooo和其他?以下任何一项都会产生您想要的结果: s = s.replaceAll("([a-z])\\1+",

假设我有一个字符串,如:

      String s = "hellllooooo howwwwwww areeeeeee youuuuuuu";
我想丢弃重复的字母,并想得到:

     "helloo howw aree youu"
我已使用以下命令完成匹配:

        matches(".*([a-z])\\1{3,}.*"

但是如何将Hellooo替换为Hellooo和其他?

以下任何一项都会产生您想要的结果:

s = s.replaceAll("([a-z])\\1+", "$1$1");

s = s.replaceAll("(([a-z])\\2)\\2*", "$1");

如果我可以问:我以前没有在regexp模式中看到“\\1”,它是做什么的?使用“for”怎么样?从索引0-s进行跟踪。长度()?