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