正则表达式,修剪多个字符?

时间:2015-01-19 07:20:35

标签: java regex

假设我有一个字符串:

tttteeeeeeessssssttttttt

使用正则表达式的强大功能,该字符串如何变成:

test

起初看起来很容易做到,但我现有的代码(不是正则表达式)表现不佳,而且我非常确定正则表达式是要走的路。

3 个答案:

答案 0 :(得分:2)

您可以使用:

str = str.replaceAll("([A-Za-z])\\1+", "$1");

RegEx Demo

答案 1 :(得分:1)

使用string.replaceAll功能。

strng.replaceAll("(.)\\1+", "$1");

上述正则表达式捕获相同字符序列中的第一个字符,并匹配以下一个或多个字符(必须与捕获组内的字符相同)。用组索引1中的字符替换这些字符将为您提供所需的输出。

示例:

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

输出:

test

答案 2 :(得分:1)

(.)(?=\1)

试试这个。empty string。见。演示。

https://regex101.com/r/tX2bH4/41

str = str.replaceAll("(.)(?=\\1)", "");