Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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,我正在匹配一个模式,它是句子“youarest”中的字符串“test”,并将其替换为“test\” 问题出现在语句matcher.appendReplacement(sb,“test\”)中其中“\”被视为特殊字符,不执行替换 请分享您对如何克服这种情况以及如何用字符串中的“\”替换的想法。要在java中将\放在字符串文字中,您必须将其转义为\ 但这有点复杂。请参阅javadoc: 请注意,替换中使用反斜杠(\)和美元符号($) 字符串可能会导致结果与正在使用的结果不同 被视为文字替换字符串。美

我正在匹配一个模式,它是句子“youarest”中的字符串“test”,并将其替换为“test\”

问题出现在语句
matcher.appendReplacement(sb,“test\”)中其中“\”被视为特殊字符,不执行替换


请分享您对如何克服这种情况以及如何用字符串中的“\”替换的想法。

要在java中将
\
放在字符串文字中,您必须将其转义为
\

但这有点复杂。请参阅javadoc:

请注意,替换中使用反斜杠(
\
)和美元符号($) 字符串可能会导致结果与正在使用的结果不同 被视为文字替换字符串。美元符号可能会被处理 作为上述捕获子序列的参考,以及 反斜杠用于转义替换中的文字字符 绳子

所以你必须双倍逃跑:

matcher.appendReplacement(sb, "test\\\\"));

要在java中将
\
放在字符串文本中,必须将其转义为
\

但这有点复杂。请参阅javadoc:

请注意,替换中使用反斜杠(
\
)和美元符号($) 字符串可能会导致结果与正在使用的结果不同 被视为文字替换字符串。美元符号可能会被处理 作为上述捕获子序列的参考,以及 反斜杠用于转义替换中的文字字符 绳子

所以你必须双倍逃跑:

matcher.appendReplacement(sb, "test\\\\"));

当一行代码可以做同样的事情时,为什么要使用所有这些代码行:

String s = input.replaceAll("test", "$0\\\\");

请注意,使用
$0
反向引用整个匹配,使用双反斜杠创建文本正则表达式反斜杠。

为什么要使用所有这些代码行,而一行将执行相同的操作:

String s = input.replaceAll("test", "$0\\\\");

请注意使用
$0
反向引用整个匹配,使用双反斜杠创建文本正则表达式反斜杠。

尝试以下操作?匹配者。替换(sb,“”);试试下面的?匹配者。替换(sb,“”);