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.
Tóm Tắt
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