Java - Извлечение строк с помощью Regex

ве эту строку

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

и мне нужно извлечь эти 3 подстроки

1234

6:30

7:45



Если я использую это регулярное выражение \\ d {2} \: \\ d {2} I 'м только в состоянии извлечь первый час 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) выдает исключение.

Также я нене знаю, как извлечь 1234. Эта строка может измениться, но она всегда идет после 'XX ~ '

Есть ли у вас какие-либо идеи о том, как сопоставить эти строки с выражениями регулярных выражений?

ОБНОВИТЬ

Благодаря предложению Адама ятеперь это регулярное выражение, которое соответствует моей строке

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

Я сопоставляю число и 2 часа с matcher.group (1); matcher.group (2); matcher.group (3);

Ответы на вопрос(1)

Ваш ответ на вопрос