在String中选择第3个数字

时间:2017-01-25 22:54:51

标签: java regex

鉴于此字符串:“a001212a a1212a a00333a a00334a abvbv”;

我试图通过更改正则表达式来选择第三个数字。但我无法弄明白。我只被允许改变正则表达式。如果我将参数更改为matcher.group(2)而不是组(1),则下面的代码有效。

帮助?

String nthNumber(String string) {
        Pattern pat = Pattern.compile(
                "(\\D+0*(\\d+)\\D+){3,}.*"
        );

        Matcher matcher = pat.matcher(string);
        matcher.matches();
        return matcher.group(1);
    }

1 个答案:

答案 0 :(得分:1)

您可以将第一个组设为非捕获组,如下所示。然后,组(1)应该工作。

String nthNumber(String string) {
        Pattern pat = Pattern.compile(
                "(?:\\D+0*(\\d+)\\D+){3,}.*"
        );

        Matcher matcher = pat.matcher(string);
        matcher.matches();
        return matcher.group(1);
    }