在特殊字符之后删除特殊字符和单词字符,然后删除Java中的空格

时间:2013-09-27 05:49:24

标签: java regex replaceall

如果标题不清楚,这里是例子

我想删除字符串中的所有特殊字符,特殊字符后跟一个空格后的单词字符。

String = "Here is the world's first movie. #movie";

通过上面的例子,我需要像

这样的输出
"Here is the world first movie movie";

我尝试了许多正则表达式来实现这一点,但我不能尝试跟随

replaceAll("[^\\w]\\w{1}\\s", " ");

但它不起作用,你能解释一下Regex吗?

提前致谢

修改:要求我要删除#movie中的特殊字符,并且还要删除包含单个字符的特殊字符,后跟{{1}中的空格最终输出应为world's favorite

最可能的特征是world favorite之后的特征。例如 's'

2 个答案:

答案 0 :(得分:0)

    String input = "Here is the world's first movie. #movie";
    String output = input.replaceAll("[!@#$%^&*][a-z]+", "");
    System.out.println(output);

正则表达式 - [!@#$%^& *] [a-z] +

   [!@#$%^&*] - tests for special character for the first character
   [a-z]+ - tests for word

答案 1 :(得分:0)

最后,我通过许多反复尝试使其工作,最终的正则表达式字符串是[^a-zA-Z\\s]s?(\\s)?

str.replaceAll("[^a-zA-Z\\s]s?(\\s)?", "$1");

这是解释,

[^a-zA-Z\\s]s? =>找到除白色空格之外的所有特殊字符,后跟一个或零s

(\\s)? =>紧接着是一个零空格。

我在这里分组(\\s) becoz我想在replaceAll()函数中使用它作为第二参数替换为$1

答案是

String orig = "Here is the world's first movie. #movie";`
System.out.println(orig..replaceAll("[^a-zA-Z\\s]s?(\\s)?", "$1"));

最终输出将为Here is the world first movie movie