正则表达式捕获Java中的组和反向引用

捕获组是一种将多个字符视为一个单元的方法。通过将要分组的字符放在一组括号内来创建它们。例如,正则表达式(狗)创建一个包含字母“ 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次接着2次5次
      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("不匹配!");    
      }
       
      //\ 1作为对捕获组(\ d)的反向引用
      pattern = "(\\d)\\1{5}";


      r = Pattern.compile(pattern);
      m = r.matcher(test);
      if (m.find( )) {
         System.out.println("Matched!");  
      }else{
         System.out.println("不匹配!");    
      }
   }
}