繁体   English   中英

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

[英]Java regular expression to remove all non alphanumeric characters EXCEPT spaces

我正在尝试在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不是\\s在这里。

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

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

请查看此站点,您可以在线测试Java Regex并获得格式正确的正则表达式字符串模式:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM