为什么replaceFirst和replaceAll给出不同的结果?

时间:2012-10-18 05:29:29

标签: java regex

以下代码将str设置为“testss”

String str = "test".replaceAll("(.*)$","$1s");

以下代码将其设置为“tests”

String str = "test".replaceFirst("(.*)$","$1s");

我原本希望两个操作产生相同的结果。有人可以解释为什么replaceAll会在字符串的末尾添加额外的s?

1 个答案:

答案 0 :(得分:5)

这是因为"(.*)$""test""test"和空字符串(“”)中捕获了两个字符串。因此,replaceAll将添加两个"s"