Java: извлечь номер группы из Matcher

Очень короткий вопрос, можно ли извлечь номера групп, найденные Matcher?

например вот мой код:

Pattern k = Pattern.compile("(рис.\\s(\\d+)|[Рр]исунок\\s(\\d+)|[Рр]исунку\\s(\\d+)|fig.\\s(\\d+)|[fF]igure\\s(\\d+))");
Matcher m = k.matcher(DOMNode.getTextContent());

            while(m.find()) {           
              domElement.setAttribute("rid", "fig" + m.group(!1));
            }

С этим шаблоном я могу получить несколько полных совпадений. Они будут сгруппированы как совпадение 1: группа 1, группа 2; матч 2: группа 1, группа 3; матч 3: группа 1, группа 4

Я хочу добавить атрибут элемента DOM из второй группы. В цикле это будет группа 2 из первого матча, группа 3 из второго матча и т. Д.

1 ответ

Решение

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

while(m.find()) {
   for (c=2; c<=m.groupCount(); c++) {
       if (m.group(c) != null) {
           domElement.setAttribute("rid", "fig" + m.group(c));
           break;
       }
   }
}
Другие вопросы по тегам