La respuesta, en la API
http://docs.oracle.com/javase/6/docs...her.html#find()
Cita: This method starts at the beginning of this matcher's region, or, if a previous invocation of the method was successful and the matcher has not since been reset, at the first character not matched by the previous match.
Cada vez que haces un find, continúa a partir de ese punto.
Tienes dos opciones, o guardar el valor del primer find, o hacer un if del find y dentro de él las otras dos condiciones.