如果标题不清楚,这里是例子
我想删除字符串中的所有特殊字符,特殊字符后跟一个空格后的单词字符。
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'
答案 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