Comportamiento extraño en expresiones regulares

Hubo una pregunta sobre expresiones regulares y tratando de responder, encontré otras cosas extrañas.

String x = "X";
System.out.println(x.replaceAll("X*", "Y"));

Esto imprime YY. ¿¿por qué?

String x = "X";
System.out.println(x.replaceAll("X*?", "Y"));

Y esto imprime YXY

¿Por qué la expresión regular reacia no coincide con el carácter 'X'? Ahi esta"noting"X"nothing" pero ¿por qué primero no coincide con tres símbolos y coincide con dos y luego con uno en lugar de tres? y la segunda expresión regular solo coincide con"nothing"s y noX?

Respuestas a la pregunta(6)

Su respuesta a la pregunta