Java正则表达式删除所有非字母数字字符EXCEPT空格

时间:2012-08-03 13:44:14

标签: java regex

我正在尝试在Java中编写一个正则表达式,它删除段落中的所有非字母数字字符,但单词之间的空格除外。

这是我写的代码:

paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\s]", "");

但是,编译器给了我一条错误消息,指出s说这是一个非法的转义字符。在我将\ s添加到正则表达式的末尾之前,程序编译好了,但问题是段落中的单词之间的空格被删除了。

如何解决此错误?

5 个答案:

答案 0 :(得分:36)

您需要双重转义\字符:"[^a-zA-Z0-9\\s]"

Java会将\s解释为Java String转义字符,这确实是一个无效的Java转义符。通过编写\\,您可以转义\字符,实际上是向正则表达式发送单个\字符。这个\然后成为正则表达式转义字符\s的一部分。

答案 1 :(得分:10)

您需要转义\以使正则表达式识别\ s:

paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\\s]", "");

答案 2 :(得分:4)

维多利亚州,你必须在这里写\\s而不是\s

答案 3 :(得分:3)

通常,只要您看到该错误,就意味着您只需要一个反斜杠,您需要两个:

paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\\s]", "");

答案 4 :(得分:1)

请看一下这个网站,你可以在线测试Java Regex并获得格式正确的正则表达式字符串模式:

http://www.regexplanet.com/advanced/java/index.html