Java正则表达式删除所有非字母数字字符EXCEPT空格
我正在尝试用Java编写一个正则表达式,它删除段落中的所有非字母数字字符,除了单词之间的空格。
这是我写的代码:
paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\s]", "");
但是,编译器给了我一条错误消息,指出s说这是一个非法的转义字符。 在我将\ s添加到正则表达式的末尾之前,程序编译好了,但问题是段落中的单词之间的空格被删除了。
我该如何解决这个错误?
你需要双重转义\
字符: "[^a-zA-Z0-9\\s]"
Java会将\s
解释为Java String转义字符,这确实是一个无效的Java转义符。 通过编写\\
,您可以转义\
字符,基本上将单个\
字符发送到正则表达式。 这个\
然后成为正则表达式转义字符\s
。
您需要转义\以使正则表达式识别\ s:
paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\\s]", "");
维多利亚,你必须在这里写下\\s
。
通常,只要您看到该错误,就意味着您只需要一个反斜杠,您需要两个:
paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\\s]", "");
请看一下这个网站,你可以在线测试Java Regex并获得格式正确的正则表达式字符串模式: