在Java正则表达式中重置匹配器

可以使用java.util.regex.Matcher.reset()方法重置Matcher。此方法返回重置的Matcher。

给出了一个演示Java正则表达式中Matcher.reset()方法的程序,如下所示:

示例

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MainClass {
   public static void main(String args[]) {
      Pattern p = Pattern.compile("(a*b)");
      Matcher m = p.matcher("caaabcccab");
      System.out.println("The input string is: caaabcccab");
      System.out.println("The Regex is: (a*b)");
      System.out.println();
      while (m.find()) {
         System.out.println(m.group());
      }
      m.reset();
      System.out.println("\nThe Matcher is reset");
      while (m.find()) {
         System.out.println(m.group());
      }
   }
}

输出结果

The input string is: caaabcccab
The Regex is: (a*b)
aaab
ab
The Matcher is reset
aaab
ab

现在让我们了解上面的程序。

在字符串序列“ caaabcccab”中搜索子序列“(a * b)”。然后使用find()方法查找子序列是否在输入序列中,并打印所需的结果。Matcher.reset()方法用于重置Matcher。然后,他再次使用find()方法,并打印所需的结果。

演示此代码段如下:

Pattern p = Pattern.compile("(a*b)");
Matcher m = p.matcher("caaabcccab");
System.out.println("The input string is: caaabcccab");
System.out.println("The Regex is: (a*b)");
System.out.println();
while (m.find()) {
   System.out.println(m.group());
}
m.reset();
System.out.println("\nThe Matcher is reset");
while (m.find()) {
   System.out.println(m.group());
}