csdn—正则表达式当中的捕获组

  • Post author:
  • Post category:其他


捕获组

捕获组是把多个字符当成一个单独的单元进行处理的方法。

这个方法是通过对括号里面的字符进行分组来进行创建的。

打个比方来说,正则表达式(dog)创建了单一分组,组里面是包含了”d”,”o”,”g”这三个东西的。

那么捕获组是什么意思呢,就是通过从左到右计算它的开括号来编号的。

这一点是比较难以理解的。

我们再举个例子,在表达式((A)(B(C)))当中,这里面是有四个下面的组的。

((A)(B(C)))

(A)

(B(C))

(C)

可以通过调用matcher对象的groupCount方法来查看表达式当中到底是有多少个分组的。

groupCount方法会返回一个int的值,就表示个数的。

表示的就是matcher对象当前有多个小组的。

另外,还有一个特殊的组(group(0)),这个意思是什么呢,它总是代表整个表达式的。

这个组不包括在groupCount的返回值当中的。

为了理解这个小知识点。

我们举个实际的例子

下面的例子说明如何从一个给定的字符串当中,找到数字串。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class regex3 {
    public static void main( String args[] ){

          // 按指定模式在字符串查找
          String line = "This order was placed for QT3000! OK?";
          String pattern = "(\\D*)(\\d+)(.*)";

          // 创建 Pattern 对象
          Pattern r = Pattern.compile(pattern);

          // 现在创建 matcher 对象
          Matcher m = r.matcher(line);
          if (m.find( )) {
              System.out.println(m.groupCount());
              for (int i = 0; i <= m.groupCount(); i++) {
                System.out.println("找到了:"+m.group(i));
            }
          } else {
             System.out.println("什么都没有找到");
          }
       }
}



版权声明:本文为oneqinglong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。