我想替换所有字符串,如:
"aaaa"
"zzzzzzz"
"----------"
"TTTTTT"
"...."
String只包含一个char,但是> 3次。
我使用Java。我可以用超过3次替换特定字符(例如" a"),但不知道如何使用任何字符执行此操作:
str = str.replaceAll("^[a]{4,}$", "");
有什么想法吗?如果这不能在正则表达式中完成,你会怎么做?
答案 0 :(得分:3)
任何字符都可以与.
和Pattern.DOTALL
修饰符匹配。
要检查它是否相同,我们可以捕获第一个字符并使用反向引用来匹配相同的文本,并使用限制量词{3,}
来检查相同子字符串的至少3次出现。
查看regex和IDEONE demo:
List<String> strs = Arrays.asList("aaaa", "zzzzzzz", "----------", "TTTTTT", "....");
for (String str : strs)
System.out.println("\"" + str.replaceAll("(?s)^(.)\\1{3,}$", "") + "\"");