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

Mic*_*ael 2 java regex string pattern-matching replaceall

我需要用每个基本构造单元替换单词中的重复模式.例如,我有字符串"TATATATA",我想用"TA"替换它.此外,我可能会更换超过2次重复,以避免替换正常的单词.

我试图用Java替换所有方法.

Mig*_*ork 6

我想你想要这个(适用于任何长度的重复字符串):

String result = source.replaceAll("(.+)\\1+", "$1")
Run Code Online (Sandbox Code Playgroud)

或者,优先考虑较短的匹配:

String result = source.replaceAll("(.+?)\\1+", "$1")
Run Code Online (Sandbox Code Playgroud)

它首先匹配一组字母,然后再次匹配(在匹配模式本身中使用反向引用).我尝试了它,它似乎做了伎俩.


String source = "HEY HEY duuuuuuude what'''s up? Trololololo yeye .0.0.0";

System.out.println(source.replaceAll("(.+?)\\1+", "$1"));

// HEY dude what's up? Trolo ye .0
Run Code Online (Sandbox Code Playgroud)