Java Don';t按正则表达式读取字符串,按原样读取

Java Don';t按正则表达式读取字符串,按原样读取,java,regex,Java,Regex,基本上我使用以下代码 message.replaceFirst(cmd, ""); 这很好,但有时cmd的值为“\”,这会导致问题,因为它试图将其读取为regex,并给出以下错误 Caused by: java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^ at java.util.regex.Pattern.error(Unknown Source) ~[?:1.7.0_45] at

基本上我使用以下代码

message.replaceFirst(cmd, "");
这很好,但有时cmd的值为“\”,这会导致问题,因为它试图将其读取为regex,并给出以下错误

Caused by: java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
^
at java.util.regex.Pattern.error(Unknown Source) ~[?:1.7.0_45]
at java.util.regex.Pattern.compile(Unknown Source) ~[?:1.7.0_45]
at java.util.regex.Pattern.<init>(Unknown Source) ~[?:1.7.0_45]
at java.util.regex.Pattern.compile(Unknown Source) ~[?:1.7.0_45]
at java.lang.String.replaceFirst(Unknown Source) ~[?:1.7.0_45]
原因:java.util.regex.PatternSyntaxException:索引1附近出现意外内部错误
\
^
在java.util.regex.Pattern.error(未知源)~[?:1.7.0_45]
在java.util.regex.Pattern.compile(未知源代码)~[?:1.7.0_45]
在java.util.regex.Pattern.(未知源代码)~[?:1.7.0_45]
在java.util.regex.Pattern.compile(未知源代码)~[?:1.7.0_45]
在java.lang.String.replaceFirst(未知源代码)~[?:1.7.0_45]
基本上,我想知道是否有一种方法可以让它按原样阅读,而不必尝试将其用作正则表达式

提前感谢

您必须使用,因为
\
是正则表达式中的特殊字符

message.replaceFirst(Pattern.quote(cmd), "");
在替换字符串中也可能遇到同样的问题,在本例中使用。

您必须使用,因为
\
是正则表达式中的特殊字符

message.replaceFirst(Pattern.quote(cmd), "");
替换字符串中也可能遇到同样的问题,在本例中使用。

按原样使用:

按原样使用: