java正则表达式捕获组问题
高洛峰
高洛峰 2016-11-11 09:11:11
0
1
442

下面这个正则表达式的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)
三叔

来源http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#groupCount(

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 


최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿