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

如果我有一个类似“Cooooool”的词,我需要将其转换为带有3 o的“Coool”。这样我就可以用普通的单词“cool”来区分它。

另一个例子:“happyyyyyy”应该是“happyyy”

replaceAll("(.)\\1+","$1"))

我试过了,但是它删除了所有重复的字符,只剩下一个。

最佳答案

如下更改您的正则表达式。

string.replaceAll("((.)\\2{2})\\2+","$1");
  • (第一个关注组的开始。
  • (.)捕获任何字符。在这种情况下,您可以使用[a-z]
  • \\2引用第二个捕获组。 \\2{2},必须重复两次。
  • )第一个捕获组的末尾。因此,这将捕获前三个重复字符。
  • \\2+重复第二组一次或多次。

  • DEMO

    07-26 09:30
    查看更多