用一个副本替换一系列子串

mos*_*aab 4 java regex

对于给定的单词,我想要搜索彼此相邻的所有子字符串至少3次,并将所有子字符串替换为仅一个.当子串只有一个字符时,我知道如何做到这一点.例如,下面的代码为输入字符串"Bahhhhhhh"返回"Bah":

String term = "Bahhhhhhh";
term = term.replaceAll("(.)\\1{2,}", "$1");
Run Code Online (Sandbox Code Playgroud)

但是,我需要一个更通用的模式,将"Bahahahaha"转换为"Baha".

Pri*_*ley 6

    String[] terms = { "Bahhhhhhh", "Bahahahaha" };
    for (String term : terms) {
        System.out.println(term.replaceAll("(.+?)\\1{2,}", "$1"));
    }
Run Code Online (Sandbox Code Playgroud)

输出:

Bah 
Baha
Run Code Online (Sandbox Code Playgroud)