因此,我发现了很多帖子,您可以使用"[^0-9.]"
删除非数字字符,"[^\\p{L}\\s]+"
删除非字符。
但如何结合这两者。 ?
如果我尝试类似
的话replaceAll("[^\\p{L}\\s]+" + "[^0-9.]"
它无法正常工作..
答案 0 :(得分:3)
只需将角色类合并为一个:
s = s.replaceAll("[^\\p{L}\\s0-9.]+", "");
当您添加字符串时,生成的正则表达式模式看起来像[^\\p{L}\\s]+[^0-9.]
,它匹配非字符和非空白字母(1次或更多次出现)和1个非数字非句点字符。
在您的情况下,您希望匹配不是数字,字母,空格或句点的字符(或1个或多个字符)。因此,两个否定的字符类应该合并为1,而不仅仅是连接。
如果您还打算排除下划线,可以尝试更短的版本:
s = s.replaceAll("[^\\w\\s.]+", "");
\w
匹配[\\p{L}0-9_]
。