Java 正则表达式:替换特定字符和空格以外的内容
我用Java编码,我有一个字符串,我想保留字母、数字、“:”、“-”和空格,并删除其他所有内容。因此,我使用了这段代码:Java 正则表达式:替换特定字符和空格以外的内容,java,regex,Java,Regex,我用Java编码,我有一个字符串,我想保留字母、数字、“:”、“-”和空格,并删除其他所有内容。因此,我使用了这段代码: str=str.replaceAll("[^\\dA-Za-z#:-\\s*]", ""); 它不起作用 它确实工作得很好,直到 str=str.replaceAll("[^\\dA-Za-z#:-]", ""); 除字母、数字和字符外,其他所有内容均被删除“:”和“-” 但是,当我试图为空白字符添加条件时,我遇到了一些问题 谢谢你的帮助 提前感谢。破折号必须是字符类中的
str=str.replaceAll("[^\\dA-Za-z#:-\\s*]", "");
它不起作用
它确实工作得很好,直到
str=str.replaceAll("[^\\dA-Za-z#:-]", "");
除字母、数字和字符外,其他所有内容均被删除“:”和“-”
但是,当我试图为空白字符添加条件时,我遇到了一些问题
谢谢你的帮助
提前感谢。破折号必须是字符类中的第一个或最后一个字符,否则将被解释为范围指示器(如
[a-Z]
);在您的情况下,[:-\\s]
是一个无意义的范围。使用
str = str.replaceAll("[^\\dA-Za-z#:\\s-]+", "");
(或者您想在文本中也保留星号吗)?
-
在字符类范围内使用时
在您的例子中,您实际上是在尝试匹配范围:
到\s
之间的字符,这是一个无效的范围
将
-
移到起点
[^-\\dA-Za-z#:\\s]
还是结束
[^\\dA-Za-z#:\\s-]
那么
#
和*
呢?它们在你的角色类中,但是你在解释正则表达式应该做什么时没有提到它们。你应该删除最后一个选项。那没有用。非常感谢你的回答。。现在我有[^\\A-Za-z\\s-]返回索引3附近的错误非法/不受支持的转义序列。你知道为什么吗?@user2008973应该是[^\\dA-Za-z\\s-]
<代码>\\A在regexOk中不是有效的转义序列,明白了!谢谢你,阿尼鲁德。