在 Java Regex 中捕获组和反向引用


捕获组是一种将多个字符视为一个整体的方式。通过将要分组的字符放在一对括号内来创建它们。例如,正则表达式 (dog) 创建了一个包含字母“d”、“o”和“g”的单组。

捕获组的编号是根据它们从左到右的左括号记数。

例如,在表达式 ((A)(B(C))) 中,有四个这样的组 -

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

反向引用允许通过使用像 \# 这样的数字重复捕获组,其中 # 是组号。

请看下面的示例 −

示例

实时演示

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Tester {
   public static void main(String[] args) {
      //2 followed by 2 five times
      String test = "222222";
      String pattern = "(\d\d\d\d\d)";
      Pattern r = Pattern.compile(pattern);
      Matcher m = r.matcher(test);
      if (m.find( )) {
         System.out.println("Matched!");
      }else {
         System.out.println("not matched!");
      }
      //\1 as back reference to capturing group (\d)
      pattern = "(\d)\1{5}";
      r = Pattern.compile(pattern);
      m = r.matcher(test);
      if (m.find( )) {
         System.out.println("Matched!");
      }else {
         System.out.println("not matched!");
      }
   }
}

输出

Matched!
Matched!

更新日期:25-2-2020

879 次浏览

开启您的 职业生涯

完成课程并获得认证

开始
广告