有人可以给我一个Java正则表达式来替换以下内容。
如果我有一个类似“Cooooool”的词,我需要将其转换为带有3 o的“Coool”。这样我就可以用普通的单词“cool”来区分它。
另一个例子:“happyyyyyy”应该是“happyyy”
replaceAll("(.)\\1+","$1"))
我试过了,但是它删除了所有重复的字符,只剩下一个。
最佳答案
如下更改您的正则表达式。
string.replaceAll("((.)\\2{2})\\2+","$1");
(
第一个关注组的开始。 (.)
捕获任何字符。在这种情况下,您可以使用[a-z]
\\2
引用第二个捕获组。 \\2{2}
,必须重复两次。 )
第一个捕获组的末尾。因此,这将捕获前三个重复字符。 \\2+
重复第二组一次或多次。 DEMO