我正在编写使用的代码,Matcher#replaceAll并发现以下结果非常令人困惑:
Pattern.compile("(.*)").matcher("sample").replaceAll("$1abc");
Run Code Online (Sandbox Code Playgroud)
现在,我希望输出可以,sampleabc但Java会引发我的注意sampleabcabc.
有人有什么想法吗?
现在,当然,当我锚定模式(^(.*)$)时,问题就消失了.我仍然不知道为什么地狱会replaceAll做那样的双重替换.
并加上侮辱伤害,遵循以下代码:
Pattern.compile("(.*)").matcher("sample").replaceFirst("$1abc")
Run Code Online (Sandbox Code Playgroud)
按预期工作,只返回sampleabc.