用一个特殊字符

时间:2016-01-25 12:09:12

标签: java regex

我想通过单个下划线" "从我的java字符串中删除多次出现的特殊字符,例如"-""!""_""_"。 我试过了

replaceAll("([\\s\\-\\!])\\1+","_")

它似乎用下划线替换连续相同类型的特殊字符,但不起作用。 例如:

Hello!!!  World

变为

Hello__World

(2个下划线。)但它应该是Hello_World

对于像Hello - World这样的情况,它也会失败。 我也尝试使用正则表达式并制作了正则表达式,如

replaceAll("([^a-zA-Z0-9])\\1+","_")

但它仍无济于事。我怎样才能实现它?

1 个答案:

答案 0 :(得分:4)

请注意,\1是与第一个捕获组匹配的内容的反向引用。要实际匹配字符类中的一个或多个字符,只需使用+量词:

[\\s!-]+

所以,使用

str = str.replaceAll("[\\s!-]+","_");

请参阅IDEONE demo