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;
}
}
}