正则表达式 - 替换只包含一个但重复的字符串的字符串

时间:2015-11-26 10:54:58

标签: java regex

我想替换所有字符串,如:

"aaaa"
"zzzzzzz"
"----------"
"TTTTTT"
"...."

String只包含一个char,但是> 3次。

我使用Java。我可以用超过3次替换特定字符(例如" a"),但不知道如何使用任何字符执行此操作:

str = str.replaceAll("^[a]{4,}$", "");

有什么想法吗?如果这不能在正则表达式中完成,你会怎么做?

1 个答案:

答案 0 :(得分:3)

任何字符都可以与.Pattern.DOTALL修饰符匹配。

要检查它是否相同,我们可以捕获第一个字符并使用反向引用来匹配相同的文本,并使用限制量词{3,}来检查相同子字符串的至少3次出现。

查看regexIDEONE demo

List<String> strs = Arrays.asList("aaaa", "zzzzzzz", "----------", "TTTTTT", "....");
for (String str : strs)
    System.out.println("\"" + str.replaceAll("(?s)^(.)\\1{3,}$", "") + "\"");