我需要用每个基本构造单元替换单词中的重复模式。例如 我有字符串“TATATATA”,我想将其替换为“TA”。另外,我可能会替换 2 次以上的重复,以避免替换正常单词。
我正在尝试使用Java中的replaceAll方法来做到这一点。
最佳答案
我想你想要这个(适用于任何长度的重复字符串):
String result = source.replaceAll("(.+)\\1+", "$1")
或者,优先考虑较短的匹配:
String result = source.replaceAll("(.+?)\\1+", "$1")
它首先匹配一组字母,然后再次匹配(在匹配模式本身中使用反向引用)。我尝试了一下,似乎成功了。
<小时/>示例
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
关于java - 正则表达式替换重复的字符串模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24008657/