Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式:替换特定字符和空格以外的内容_Java_Regex - Fatal编程技术网

Java 正则表达式:替换特定字符和空格以外的内容

Java 正则表达式:替换特定字符和空格以外的内容,java,regex,Java,Regex,我用Java编码,我有一个字符串,我想保留字母、数字、“:”、“-”和空格,并删除其他所有内容。因此,我使用了这段代码: str=str.replaceAll("[^\\dA-Za-z#:-\\s*]", ""); 它不起作用 它确实工作得很好,直到 str=str.replaceAll("[^\\dA-Za-z#:-]", ""); 除字母、数字和字符外,其他所有内容均被删除“:”和“-” 但是,当我试图为空白字符添加条件时,我遇到了一些问题 谢谢你的帮助 提前感谢。破折号必须是字符类中的

我用Java编码,我有一个字符串,我想保留字母、数字、“:”、“-”和空格,并删除其他所有内容。因此,我使用了这段代码:

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中不是有效的转义序列,明白了!谢谢你,阿尼鲁德。