可以使用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()); }