Java: 从匹配器中提取组号

Java: extract group number from 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 组等。

您可以从第二组开始遍历所有组并找到第一个非空组并填充您的 dom:

while(m.find()) {
   for (c=2; c<=m.groupCount(); c++) {
       if (m.group(c) != null) {
           domElement.setAttribute("rid", "fig" + m.group(c));
           break;
       }
   }
}