如何从文本中删除特定的重复字符?

时间:2017-09-25 13:40:27

标签: java regex

我有一个类似

的字符串
"this is line 1\n\n\nthis is line 2\n\n\nthis is line 3\t\t\tthis is line 3 also"

我想要做的是从此文本中删除重复的特定字符,例如“\ n”,“\ t”。

"this is line 1\nthis is line 2\nthis is line 3\tthis is line 3 also"

我尝试了一些正则表达式,但对我没用。

text = text.replace("/[^\\w\\s]|(.)\\1/gi", ""); 

这有什么正则表达式吗?

2 个答案:

答案 0 :(得分:3)

如果您只需删除 sepcific 空白字符,\s将无法提供帮助,因为它会匹配,即它也会匹配空格,硬空间等。

您可以使用带有字符的字符类,使用捕获组包装它们,并对捕获的值使用反向引用。并替换为对第1组值的反向引用:

.replaceAll("([\n\t])\\1+", "$1")

请参阅regex demo

<强>详情

  • ([\n\t]) - 第1组(模式中引用\1,替换模式中引用$1):匹配换行符或制表符符号的字符类
  • \1+ - 第1组中值的一次或多次重复。

答案 1 :(得分:0)

我会使用Guava's CharMatcher

CharMatcher.javaIsoControl().removeFrom(myString)