正则表达式替换重复的字符

Raj*_*ika 4 java regex

有人可以给我一个Java正则表达式来替换以下内容.

如果我有一个像这样的"Cooooool"这样的词,我需要用3 o将其转换为"Coool".所以我可以用正常的词"酷"来区分它.

另一个例子:"happyyyyyy"应该是"happyyy"

replaceAll("(.)\\1+","$1"))
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但它删除了所有重复的字符,只留下一个.

Avi*_*Raj 5

像下面这样改变你的正则表达式.

string.replaceAll("((.)\\2{2})\\2+","$1");
Run Code Online (Sandbox Code Playgroud)
  • ( 第一个捕捞组的开始.
  • (.)捕获任何角色.对于这种情况,您可以使用[a-z]
  • \\2指第二个捕获组.\\2{2}必须重复两次.
  • )第一个捕获组结束.所以这将捕获前三个重复的字符.
  • \\2+ 重复第二组一次或多次.

DEMO