java - 选择字符串中的第三个数字

标签 java regex

给定这个字符串:“a001212a a1212a a00333a a00334a abvbv”;

我试图通过更改正则表达式来选择第三个数字。但我无法弄清楚。我只被允许更改正则表达式。如果我将参数更改为 matcher.group(2) 但不适用于 group(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);
    }

最佳答案

您可以将第一组设置为非捕获组,如下所示。然后,group(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);
    }

关于java - 选择字符串中的第三个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41863195/

相关文章:

正则表达式匹配除 ACTION LOGDIR ="/vz/actionlog"之外的任何其他内容

c++ - Qt/QRegularExpression - 无法捕获所有结果,只能捕获第一个实例,为什么?

java - 如何在检查是否存在 Java 8 Optional 时返回值?

java - 如何确定谁最后使用 JGit 更改了文件

java - GetResource 方法在 java 11 中不起作用

javascript - 替换符合条件的括号

python - 使用正则表达式从日志文件的最后一行获取 IP 地址

java - 安卓 TCP 客户端。服务器仅在进程停止后接收消息

java - 使用 POI 的 XSSF 和 SAX(事件 API)读取 Excel 工作表

php - 匹配无限数量选项的正则表达式