在Java reg ex中捕获组是什么意思?

正则表达式是特殊的字符序列,可以使用模式中保留的特殊语法来帮助您匹配或查找其他字符串或字符串集。

正则表达式中的捕获组用于将多个字符视为单个字符,用“()”表示。即,如果您将多个子模式放在一个同位体中,则它们将被视为一组。

例如,模式[0-9]匹配数字0到9,模式{5}匹配任何字符。如果将这两个分组为([0-9] {5}),则它与5位数字匹配。

示例

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class COMMENTES_Example {
   public static void main(String[] args) {  
      Scanner sc = new Scanner(System.in);
      System.out.println("输入你的名字: ");
      String name = sc.nextLine();
      System.out.println("输入您的出生日期: ");
      String dob = sc.nextLine();  
      //以MM-DD-YYY格式接受日期的正则表达式
      String regex = "^(1[0-2]|0[1-9])/   # For Month\n"
       + "(3[01]|[12][0-9]|0[1-9])/ # For Date\n"
       + "[0-9]{4}$                  # For Year";
      //创建一个模式对象
      Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS);
      //创建一个Matcher对象
      Matcher matcher = pattern.matcher(dob);
      boolean result = matcher.matches();
      if(result) {
         System.out.println("Given date of birth is valid");
      }else {
         System.out.println("Given date of birth is not valid");
      }  
   }
}
输出结果
输入你的名字:
Krishna
输入您的出生日期:
09/26/1989
Given date of birth is valid

示例

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupTest {
   public static void main(String[] args) {
      String regex = "(.*)(\\d+)(.*)";
      String input = "This is a sample Text, 1234, with numbers in between.";
      //创建一个模式对象
      Pattern pattern = Pattern.compile(regex);
      //匹配字符串中的已编译模式
      Matcher matcher = pattern.matcher(input);
      if(matcher.find()) {
         System.out.println("match: "+matcher.group(0));  
         System.out.println("第一组比赛: "+matcher.group(1));  
         System.out.println("第二组比赛: "+matcher.group(2));  
         System.out.println("第三组比赛: "+matcher.group(3));
      }
   }
}
输出结果
match: This is a sample Text, 1234, with numbers in between.
第一组比赛: This is a sample Text, 123
第二组比赛: 4
第三组比赛: , with numbers in between.