java正则表达式捕获组问题
高洛峰
高洛峰 2016-11-10 10:18:18
[Java讨论组]

下面这个正则表达式的pattern有两个组,加上默认组应该是三个组,为什么只打印出两组?(\d+)捕获组应该是3000并没有获取到这个捕获组,请问怎么解释?

String string = "This order was placed adefor QT3000! OK?";
        String pattern = "(\\D*)(\\d+)";
        Pattern r = Pattern.compile(pattern);
        Matcher m = r.matcher(string);
        while(m.find()){
            System.out.println("找到了"+m.groupCount());
            for(int i = 0 ; i < m.groupCount(); i++){
                System.out.println("Found value:" + m.group(i));
            }
        }

结果:

找到了2
Found value:This order was placed adefor QT3000
Found value:This order was placed adefor QT


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔
public int groupCount()
Returns the number of capturing groups in this matcher's pattern.  Group zero denotes the entire pattern by convention. It is not included in this count.

groupCount() 的计数是不包括 group(0) 的,所以你的循环应该写成(条件是

for (int i = 0; i 


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号