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