Как извлечь повторную часть строки? - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь извлечь повторяющуюся часть строки с помощью регулярного выражения Java.

Моя строка: s01e04:11:08

регулярное выражение: ^s(\\d+)e(\\d+)(:\\d+)*$

регулярное выражениесовпадает, но когда я пытаюсь извлечь третью группу, она возвращает только последнюю ее часть.

Ожидается: :11:08

Получено: :08

Полнаякод:

public static void main( String args[] ) {
        String marker = "s01e04:11:08";
        Pattern r = Pattern.compile("^s(\\d+)e(\\d+)(:\\d+)*$");
        Matcher matcher = r.matcher(marker);

        if (matcher.find()) {
            System.out.println(matcher.group(3));
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Ваш шаблон не соответствует 1-му ":".

Попробуйте использовать это.

("^s(\\d+)e(\\d+)((:\\d+)+)$")

(:\\d+)+ совпадение: дд один или несколько раз.

0 голосов
/ 29 мая 2018

Добавьте группу захвата вокруг повторения:

^s(\\d+)e(\\d+)((:\\d+)*)$
               ^        ^

Вы также можете сделать повторную группу не захватывающей, если вам никогда не нужно получать ее отдельно:

^s(\\d+)e(\\d+)((?::\\d+)*)$
                 ^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...