У меня есть эта строка
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}, я могу извлечь только первый час 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 ~"
Есть ли у вас какие-либо идеи о том, как сопоставить эти строки с выражениями регулярных выражений?
UPDATE
Благодаря предложению Адама у меня есть это регулярное выражение, которое соответствует моей строке
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);