在Java正则表达式"\ 1"(后向引用)不起作用

sum*_*mit 1 java regex

我想替换字符串"Cannot""Can not""cannot""can not".为此,我使用以下代码:

 String string = "I Cannot do it.";
 string = string.replaceAll("([Cc])annot", "\\1an not");
Run Code Online (Sandbox Code Playgroud)

期望的字符串是"I Can not do it.".

String string = "I Cannot do it.";
string = string.replaceAll("([Cc])annot", "\\1an not");
Run Code Online (Sandbox Code Playgroud)

期望的字符串是"I can not do it".在Ruby中,'\1'用匹配的字符替换字符串Cc(使用后引用).我不知道在Java中使用什么.下面是Ruby正则表达式工作正常:

"I Cannot do it".gsub!(/([Cc])annot/,'\1an not')
# => "I Can not do it"       
"I cannot do it".gsub!(/([Cc])annot/,'\1an not')
# => "I can not do it"
Run Code Online (Sandbox Code Playgroud)

old*_*god 5

关于什么

String string = "I Cannot do it."
string = string.replaceAll("([Cc])annot","$1an not");
Run Code Online (Sandbox Code Playgroud)