java.util.regex.Matcher.find() Method



The java.time.Matcher.find(int start) method resets this matcher and then attempts to find the next subsequence of the input sequence that matches the pattern, starting at the specified index.


Following is the declaration for java.time.Matcher.find(int start) method.

public boolean find(int start)


  • start − start index in input string.

Return Value

True if, and only if, a subsequence of the input sequence starting at the given index matches this matcher's pattern


  • IndexOutOfBoundsException − If there is no capturing group in the pattern with the given index.


The following example shows the usage of java.time.Matcher.find(int start) method.

package com.tutorialspoint;

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

public class MatcherDemo {
   private static String REGEX = "(a*b)(foo)";
   private static String INPUT = "aabfooaabfooabfoob";
   private static String REPLACE = "-";
   public static void main(String[] args) {
      Pattern pattern = Pattern.compile(REGEX);
      // get a matcher object
      Matcher matcher = pattern.matcher(INPUT);
      if(matcher.find(6)) {
         //Prints the offset after the last character matched.
         System.out.println("First Capturing Group, (a*b) Match String end(): "+matcher.end());    
         System.out.println("Second Capturing Group, (foo) Match String end(): "+matcher.end(1));  

Let us compile and run the above program, this will produce the following result −

First Capturing Group, (a*b) Match String end(): 12
Second Capturing Group, (foo) Match String end(): 9