Java转义连字符“-&引用;使用正则表达式的字符

Java转义连字符“-&引用;使用正则表达式的字符,java,Java,我使用的是Java,字符串的值如下所示 String data = "vale-cx"; data = data.replaceAll("\\-", "\\-\\"); 我正在替换它内部的“-”,但它不工作。我要查看的最终值是“vale \-cx”。也就是说,连字符需要转义 尝试使用\\\-代替,例如: String data = "vale-cx"; System.out.println(data.replaceAll("\\-", "\\\\-")); 连字符不需要转义,但在替换表达式中

我使用的是Java,字符串的值如下所示

String data = "vale-cx";
data = data.replaceAll("\\-", "\\-\\");

我正在替换它内部的“-”,但它不工作。我要查看的最终值是“vale \-cx”。也就是说,连字符需要转义

尝试使用
\\\-
代替,例如:

String data = "vale-cx";
System.out.println(data.replaceAll("\\-", "\\\\-"));

连字符不需要转义,但在替换表达式中需要转义反斜杠,这意味着您需要在连字符之前多加两个反斜杠(后面没有):

更好的是,不要使用正则表达式:

data = data.replace("-", "\\-");

连字符仅在正则表达式中用于在字符类(例如
[A-Z]
)中创建范围时才是特殊的。这里不需要这样做,所以根本不需要任何转义。

意味着不需要转义连字符。堆栈溢出会吃掉一条反斜杠。我编辑了这个问题。我认为他的意思是需要用
数据的最终值的语言对它进行转义。这是一种非常奇怪/令人困惑的方式来描述他的问题。他确实需要替换逃走。@shmosel不,他不需要。你可能想自己更仔细地阅读它。它说“请注意,替换字符串中的反斜杠()和美元符号($)可能会导致结果不同于将其视为文字替换字符串时的结果”:没有关于连字符的此类警告;如果你想继续,它会特别给出一个例子,替换字符串中有一个未替换的
-
。。。也许你需要更仔细地阅读这个问题。OP想要插入一个反斜杠。
data = data.replace("-", "\\-");