0

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

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

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

对于上面的例子,我需要像这样的输出

"Here is the world first movie movie";

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

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

但它不起作用,你能告诉我正则表达式并解释一下吗?

提前致谢

编辑:要求是我想删除像 in 这样的特殊字符#movie,并且还想删除带有单个字符后跟空格的特殊字符,如world's favorite最终输出应该是world favorite.

很可能是特殊字符之后的字符's'。例如 world's, India's, john's

4

2 回答 2

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

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

   [!@#$%^&*] - tests for special character for the first character
   [a-z]+ - tests for word
于 2013-09-27T05:56:20.793 回答
0

最后我通过多次试验和错误使它工作,最终的正则表达式字符串是[^a-zA-Z\\s]s?(\\s)?

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

这是解释,

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

(\\s)?=> 并紧跟一或零空格。

在这里我分组(\\s)因为我想在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

于 2013-09-28T06:32:21.380 回答