我正在尝试用 Java 编写一个正则表达式,它会从段落中删除所有非字母数字字符,除了单词之间的空格。
这是我写的代码:
paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\s]", "");
但是,编译器给了我一条错误消息,指向 s 说它是非法的转义字符。在我将\s 添加到正则表达式的末尾之前,程序编译正常,但问题是段落中单词之间的空格被去除了。
我该如何解决这个错误?
最佳答案
您需要对 \
字符进行双重转义:"[^a-zA-Z0-9\\s]"
Java 会将 \s
解释为 Java 字符串转义字符,这确实是无效的 Java 转义。通过编写 \\
,您可以转义 \
字符,本质上是向正则表达式发送单个 \
字符。此 \
然后成为正则表达式转义字符 \s
的一部分。
关于Java正则表达式删除所有非字母数字字符,除了空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796985/