Java - Extraer cadenas con Regex

Tengo esta cuerda

String myString ="A~BC~FGH~~zuzy|XX~ 1234~ ~~ABC~01/01/2010 06:30~BCD~01/01/2011 07:45";

y necesito extraer estas 3 subcadenas
1234
06:30
07:45

Si uso esta expresión regular \\ d {2} \: \\ d {2} solo puedo extraer la primera hora 06:30




Pattern depArrHours = Pattern.compile("\\d{2}\\:\\d{2}");
Matcher matcher = depArrHours.matcher(myString);
String firstHour = matcher.group(0);
String secondHour = matcher.group(1); (IndexOutOfBoundException no Group 1)

matcher.group (1) lanza una excepción.
Además, no sé cómo extraer 1234. Esta cadena puede cambiar pero siempre aparece después de 'XX ~'
¿Tiene alguna idea de cómo relacionar estas cadenas con expresiones de expresiones regulares?

ACTUALIZAR

Gracias a la sugerencia de Adam, ahora tengo esta expresión regular que coincide con mi cadena

Pattern p = Pattern.compile(".*XX~ (\\d{3,4}).*(\\d{1,2}:\\d{2}).*(\\d{1,2}:\\d{2})";

Coincido con el número, y las 2 horas con matcher.group (1); matcher.group (2); matcher.group (3);