Matcher Class in Java – GeeksforGeeks

In Java, Matcher is a class that is implemented by the MatchResult interface, that performs match operations on a character sequence by interpreting a Pattern.

Below, we can see the declaration of java.util.regex.Matcher in java.lang.Object Class:

public final class Matcher extends Object implements MatchResult

By invoking the pattern’s matcher method, a matcher is created from a pattern. If a matcher is created once, we can perform three different kinds of match operations on it:

  • matches(): Try to match the total input sequence against the pattern.
  • lookingAt(): Try to match the input sequence, against the pattern, starting at the beginning.
  • find(): This scans the input sequence and looks for the next subsequence especially matches the pattern.

Methods of Matcher class:

Below the methods of the Matcher class are grouped in the table for convenience according to their functionality.

1. Index Methods: 

It provides useful index values. It shows precisely whether the match was found in the input string or not:

S. No.Method NameDescription1public int start()This method returns the start index of the previous match.2public int start(int group)This method returns the start index of the subsequence captured by the given group during the previous match operation.3public int end()This method returns the offset after the last character is matched.4public int end(int group)This method returns the offset after the last character of the subsequence captured by the given group during the previous match operation.

2. Study Methods: 

It reviews the input string and returns a boolean indicating whether the pattern is found or not:

S. No.Method NameDescription1public boolean lookingAt()This method aims to match the input sequence, starting at the beginning of the region, against the pattern.2public boolean find()This method aims to find the next subsequence of the input sequence that matches the pattern.3public boolean find(int start)Resets this matcher and then tries to find the next subsequence of the input sequence which matches the pattern, starting at the specified index.4public boolean matches()This method aims to match the entire region against the pattern.

3. Replacement Methods: 

These are useful methods for replacing text in an input string:

S. No.Method NameDescription1public Matcher appendReplacement(StringBuffer sb, String replacement)This method implements a non-terminal append-and-replace step.2public StringBuffer appendTail(StringBuffer sb)This method implements a terminal append-and-replace step.3public String replaceAll(String replacement)This method replaces every subsequence of the input sequence that matches the pattern with the given replacement string.4public String replaceFirst(String replacement)This method replaces the first subsequence of the input sequence that matches the pattern with the given replacement string.5public static String quoteReplacement(String s)This method returns a literal replacement String for the specified String, this method also produces a String which will work in the appendReplacement method as a literal replacement of the Matcher class.

Example 1: Here we can see the example GFG.java which count the number of times the word “geek” appears in the input string using start()  and end() :

Java




  

import java.util.regex.Matcher;

import java.util.regex.Pattern;

  

public class GFG {

  

    private static final String REGEX = "\\bgeek\\b";

    private static final String INPUT

        = "geek geek geek geekie geeks";

  

    public static void main(String[] args)

    {

        Pattern pat = Pattern.compile(REGEX);

        

        

        Matcher mat = pat.matcher(INPUT);

        

        

        int count = 0;

  

        

        

        while (mat.find()) {

            count++;

            System.out.println("Match number " + count);

            System.out.println("start(): " + mat.start());

            System.out.println("end(): " + mat.end());

        }

    }

}



Output

Match number 1
start(): 0
end(): 4
Match number 2
start(): 5
end(): 9
Match number 3
start(): 10
end(): 14

Example 2: In this example, we can see GFG.java, the lookingAt() and matches() both attempt to match an input sequence against a pattern.

Java




  

import java.util.regex.Matcher;

import java.util.regex.Pattern;

  

public class GFG {

  

    private static final String REGEX = "geek";

    private static final String INPUT = "geeksforgeeks";

    private static Pattern pat;

    private static Matcher mat;

  

    public static void main(String[] args)

    {

  

        

        pat = Pattern.compile(REGEX);

        mat = pat.matcher(INPUT);

  

        System.out.println("Current REGEX: " + REGEX);

        System.out.println("Current INPUT: " + INPUT);

  

        System.out.println("lookingAt(): "

                           + mat.lookingAt());

        System.out.println("matches(): " + mat.matches());

    }

}



Output

Current REGEX: geek
Current INPUT: geeksforgeeks
lookingAt(): true
matches(): false

My Personal Notes

arrow_drop_up