如何在 Java 中重置正则表达式的模式

问题描述

如何重置正则表达式的模式?

解决方案

以下示例演示如何使用 Pattern 类的 Pattern.compile() 和 Matcher 类的 m.find() 方法重置正则表达式的模式。

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

public class Resetting {
   public static void main(String[] args) throws Exception {
      Matcher m = Pattern.compile("[frb][aiu][gx]").matcher("fix the rug with bags");
      while (m.find())System.out.println(m.group());
      m.reset("fix the rig with rags");
      while (m.find())System.out.println(m.group());
   }
} 

结果

上述代码示例将产生以下结果。

fix
rug
bag
fix
rig 
rag

以下是另一个重置正则表达式模式的示例

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

public class Matc {
   public static void main(String args[]) {
      Pattern p = Pattern.compile("\d");
      Matcher mat1 = p.matcher("9652018244");
      
      while (mat1.find()) {
         System.out.println("		" + mat1.group());
      } 
      mat1.reset();
      System.out.println("After done resetting the Matcher, it should be like this");
      
      while (mat1.find()) {
         System.out.println("		" + mat1.group());
      }
   }
}

结果

上述代码示例将产生以下结果。

		9
		6
		5
		2
		0
		1
		8
		2
		4
		4
After done resetting the Matcher, it should be like this
		9
		6
		5
		2
		0
		1
		8
		2
		4
		4
java_regular_exp.html