Возможный дубликат:
String.replaceAll() аномалия с жадными кванторами в regex
Странное поведение в регулярных выражениях
В то время как
"a".replaceAll("a", "b")
"a".replaceAll("a+", "b")
"a".replaceAll("a+?", "b")
all return b
, почему
"a".replaceAll("a*", "b")
return bb
и
"a".replaceAll("a*?", "b")
return bab
?