正则表达式:意外的双重替换

时间:2016-11-11 11:12:12

标签: regex scala

如果我在Scala中写这个:

System.err println "Done".replaceAll(".*$", "$0xyz")

然后输出意外地不是Donexyz而是Donexyzxyz

我知道发生了什么 - Done正在转变为Donexyz,然后又发生了第二次替换,与Donexyz匹配并将其转换为Donexyzxyz }。 (使用replaceFirst生成Donexyz,确认这一点。)但这并不能解释所有事情 - 特别是我不知道为什么我们没有得到

Done -> Donexyz -> Donexyzxyz -> Donexyzxyzxyz ->  ...

任何照明都会受到赞赏。

0 个答案:

没有答案