我有一个类似
的字符串"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", "");
这有什么正则表达式吗?
答案 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)