Aquí está el código que está causando la confusión:
public class MyClass{ public static void main(String args[]){ String s="one\ntwo\nthree\n"; s=s.replaceAll("^","START"); s=s.replaceAll("$","END"); System.out.print(s);}}Aquí está la salida:
STARTone two threeEND ENDSé que el signo de dólar coincide con el final de la línea en Java, pero pensé que funcionaría igual incluso cuando la cadena termina con \n. ¿Por qué se imprimió "FIN" dos veces?