Por que replaceFirst e replaceAll fornecem resultados diferentes?

9

O código a seguir definirá o str como "testss"

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

Onde como o código a seguir irá definir como "testes"

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

Eu esperava que ambas as operações produzissem o mesmo resultado. Alguém pode explicar por que replaceAll adiciona um s extra ao final da string?

    
por cgTag 18.10.2012 в 07:29
fonte

1 resposta

5

Isso ocorre porque "(.*)$" captura duas strings de "test" , "test" e a string vazia (""). Então replaceAll adicionará dois "s" .

    
por Matthew Farwell 18.10.2012 / 07:35
fonte