预期结果是abcd,为什么运行结果是ad啊
String s = "abbbbccccdddddddddd";
String s1 = s.replaceAll("((.)\\2)+", "$2");
s.replaceAll("((.)(?:\\2)+)", "$2");
try this
这是abcd
String s = "abbbbccccdddddddddd";
String result = s.replaceAll("(.)\\1+", "$1");
System.out.println(result); // 输出 "abcd"
你的解释:
"((.)\2)+"表示匹配连续重复的字符,其中"(.)"表示任意字符,"\2"表示对前面一个括号内的内容进行引用,因此"((.)\2)+"表示匹配连续重复的字符,例如"bb"、"cccc"、"dddddddddd"。
而"$2"则表示保留匹配到的字符中的第二个字符,例如"bb"中的"b"、"cccc"中的"c"、"dddddddddd"中的"d"。因此,最终的替换结果是"ad",即去除连续重复字符后的结果。