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

Vic*_*ria 25 java regex

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

这是我写的代码:

paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\s]", "");
Run Code Online (Sandbox Code Playgroud)

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

我该如何解决这个错误?

jqn*_*qno 39

你需要双重逃避\角色:"[^a-zA-Z0-9\\s]"

Java将解释\s为Java String转义字符,这确实是一个无效的Java转义.通过写入\\,您可以转义\角色,实际上是将单个\字符发送到正则表达式.这\便成为正则表达式的转义字符的一部分\s.


Nom*_*Sim 10

你需要转义\,以便正则表达式识别\ s:

paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\\s]", "");
Run Code Online (Sandbox Code Playgroud)


Hun*_*len 5

一般来说,每当您看到该错误时,这意味着您只有一个反斜杠,而您需要两个反斜杠:

paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\\s]", "");
Run Code Online (Sandbox Code Playgroud)