Java : Matcher (regex) with Examples
Matcher (Java SE 22 & JDK 22) with Examples.
You will find code examples on most Matcher methods.
Summary
An engine that performs match operations on a character sequence by interpreting a Pattern.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc 012 aaabc");
// First match.
System.out.println(matcher.find()); // true
System.out.println(matcher.start()); // 0
System.out.println(matcher.end()); // 3
System.out.println(matcher.group()); // "abc"
// Next match.
System.out.println(matcher.find()); // true
System.out.println(matcher.start()); // 8
System.out.println(matcher.end()); // 13
System.out.println(matcher.group()); // "aaabc"
// No match.
System.out.println(matcher.find()); // false
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc 012 aaabc");
final var stream = matcher.results();
stream.forEach(matchResult -> {
System.out.println("------");
System.out.println("start : " + matchResult.start());
System.out.println("end : " + matchResult.end());
System.out.println("group : " + matchResult.group());
});
// Result
// ↓
//------
//start : 0
//end : 3
//group : abc
//------
//start : 8
//end : 13
//group : aaabc
Methods
Matcher appendReplacement (StringBuffer sb, String replacement)
Implements a non-terminal append-and-replace step.
final var pattern = Pattern.compile("cat");
final var matcher = pattern.matcher("one cat two cats in the yard");
final var sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, "dog");
}
System.out.println(sb); // "one dog two dog"
matcher.appendTail(sb);
System.out.println(sb); // "one dog two dogs in the yard"
Matcher appendReplacement (StringBuilder sb, String replacement)
Implements a non-terminal append-and-replace step.
final var pattern = Pattern.compile("cat");
final var matcher = pattern.matcher("one cat two cats in the yard");
final var sb = new StringBuilder();
while (matcher.find()) {
matcher.appendReplacement(sb, "dog");
}
System.out.println(sb); // "one dog two dog"
matcher.appendTail(sb);
System.out.println(sb); // "one dog two dogs in the yard"
StringBuffer appendTail (StringBuffer sb)
Implements a terminal append-and-replace step.
final var pattern = Pattern.compile("cat");
final var matcher = pattern.matcher("one cat two cats in the yard");
final var sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, "dog");
}
System.out.println(sb); // "one dog two dog"
matcher.appendTail(sb);
System.out.println(sb); // "one dog two dogs in the yard"
StringBuilder appendTail (StringBuilder sb)
Implements a terminal append-and-replace step.
final var pattern = Pattern.compile("cat");
final var matcher = pattern.matcher("one cat two cats in the yard");
final var sb = new StringBuilder();
while (matcher.find()) {
matcher.appendReplacement(sb, "dog");
}
System.out.println(sb); // "one dog two dog"
matcher.appendTail(sb);
System.out.println(sb); // "one dog two dogs in the yard"
int end ()
Returns the offset after the last character matched.
final var pattern = Pattern.compile("a+bc");
final var input = "aaaaabc";
final var matcher = pattern.matcher(input);
System.out.println(matcher.matches()); // true
final var start = matcher.start();
System.out.println(start); // 0
final var end = matcher.end();
System.out.println(end); // 7
final var group = input.substring(start, end);
System.out.println(group); // "aaaaabc"
final var pattern = Pattern.compile("a+bc");
final var input = "012abcXYZ";
final var matcher = pattern.matcher(input);
System.out.println(matcher.find()); // true
final var start = matcher.start();
System.out.println(start); // 3
final var end = matcher.end();
System.out.println(end); // 6
final var group = input.substring(start, end);
System.out.println(group); // "abc"
int end (int group)
Returns the offset after the last character of the subsequence captured by the given group during the previous match operation.
final var pattern = Pattern.compile("(abc|efg)_012_(x..)");
final var matcher = pattern.matcher("abc_012_xyz");
System.out.println(matcher.matches()); // true
System.out.println(matcher.start()); // 0
System.out.println(matcher.end()); // 11
System.out.println(matcher.group()); // "abc_012_xyz"
final var groupCount = matcher.groupCount();
System.out.println(groupCount); // 2
for (int i = 1; i <= groupCount; i++) {
System.out.println("------");
System.out.println("i : " + i);
System.out.println("start : " + matcher.start(i));
System.out.println("end : " + matcher.end(i));
System.out.println("group : " + matcher.group(i));
}
// Result
// ↓
//------
//i : 1
//start : 0
//end : 3
//group : abc
//------
//i : 2
//start : 8
//end : 11
//group : xyz
int end (String name)
Returns the offset after the last character of the subsequence captured by the given named-capturing group during the previous match operation.
final var pattern = Pattern.compile("(?<A>abc|efg)_012_(?<B>x..)");
final var matcher = pattern.matcher("abc_012_xyz");
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 0
System.out.println(result.end()); // 11
System.out.println(result.group()); // "abc_012_xyz"
{
final var name = "A";
System.out.println(matcher.start(name)); // 0
System.out.println(matcher.end(name)); // 3
System.out.println(matcher.group(name)); // "abc"
}
{
final var name = "B";
System.out.println(matcher.start(name)); // 8
System.out.println(matcher.end(name)); // 11
System.out.println(matcher.group(name)); // "xyz"
}
boolean find ()
Attempts to find the next subsequence of the input sequence that matches the pattern.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc 012 aaabc");
System.out.println(matcher.hasMatch()); // false
{
System.out.println(matcher.find()); // true
System.out.println(matcher.hasMatch()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 0
System.out.println(result.end()); // 3
System.out.println(result.group()); // "abc"
}
{
System.out.println(matcher.find()); // true
System.out.println(matcher.hasMatch()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 8
System.out.println(result.end()); // 13
System.out.println(result.group()); // "aaabc"
}
System.out.println(matcher.find()); // false
System.out.println(matcher.hasMatch()); // false
boolean find (int start)
Resets this matcher and then attempts to find the next subsequence of the input sequence that matches the pattern, starting at the specified index.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("012 abc xyz aaabc");
{
System.out.println(matcher.find(8)); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 12
System.out.println(result.end()); // 17
System.out.println(result.group()); // "aaabc"
}
{
System.out.println(matcher.find(1)); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 4
System.out.println(result.end()); // 7
System.out.println(result.group()); // "abc"
}
String group ()
Returns the input subsequence matched by the previous match.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc 012 aaabc xyz");
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "abc"
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "aaabc"
System.out.println(matcher.find()); // false
String group (int group)
Returns the input subsequence captured by the given group during the previous match operation.
final var pattern = Pattern.compile("(abc|efg)_012_(x..)");
final var matcher = pattern.matcher("abc_012_xyz");
System.out.println(matcher.matches()); // true
System.out.println(matcher.start()); // 0
System.out.println(matcher.end()); // 11
System.out.println(matcher.group()); // "abc_012_xyz"
final var groupCount = matcher.groupCount();
System.out.println(groupCount); // 2
for (int i = 1; i <= groupCount; i++) {
System.out.println("------");
System.out.println("i : " + i);
System.out.println("start : " + matcher.start(i));
System.out.println("end : " + matcher.end(i));
System.out.println("group : " + matcher.group(i));
}
// Result
// ↓
//------
//i : 1
//start : 0
//end : 3
//group : abc
//------
//i : 2
//start : 8
//end : 11
//group : xyz
String group (String name)
Returns the input subsequence captured by the given named-capturing group during the previous match operation.
final var pattern = Pattern.compile("(?<A>abc|efg)_012_(?<B>x..)");
final var matcher = pattern.matcher("abc_012_xyz");
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 0
System.out.println(result.end()); // 11
System.out.println(result.group()); // "abc_012_xyz"
{
final var name = "A";
System.out.println(matcher.start(name)); // 0
System.out.println(matcher.end(name)); // 3
System.out.println(matcher.group(name)); // "abc"
}
{
final var name = "B";
System.out.println(matcher.start(name)); // 8
System.out.println(matcher.end(name)); // 11
System.out.println(matcher.group(name)); // "xyz"
}
int groupCount ()
Returns the number of capturing groups in this matcher's pattern.
final var pattern = Pattern.compile("(abc|efg)_012_(x..)");
final var matcher = pattern.matcher("abc_012_xyz");
System.out.println(matcher.matches()); // true
System.out.println(matcher.start()); // 0
System.out.println(matcher.end()); // 11
System.out.println(matcher.group()); // "abc_012_xyz"
final var groupCount = matcher.groupCount();
System.out.println(groupCount); // 2
for (int i = 1; i <= groupCount; i++) {
System.out.println("------");
System.out.println("i : " + i);
System.out.println("start : " + matcher.start(i));
System.out.println("end : " + matcher.end(i));
System.out.println("group : " + matcher.group(i));
}
// Result
// ↓
//------
//i : 1
//start : 0
//end : 3
//group : abc
//------
//i : 2
//start : 8
//end : 11
//group : xyz
boolean hasAnchoringBounds ()
Queries the anchoring of region bounds for this matcher.
final var pattern = Pattern.compile("^abc xyz$");
final var input = "012 abc xyz";
{
final var matcher = pattern.matcher(input);
System.out.println(matcher.hasAnchoringBounds()); // true
// Sets the limits of this matcher's region.
System.out.println(input.substring(4, 11)); // "abc xyz"
matcher.region(4, 11);
System.out.println(matcher.find()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 4
System.out.println(result.end()); // 11
System.out.println(result.group()); // "abc xyz"
}
{
final var matcher = pattern.matcher(input);
matcher.useAnchoringBounds(false);
System.out.println(matcher.hasAnchoringBounds()); // false
matcher.region(4, 11);
System.out.println(matcher.find()); // false
}
boolean hasMatch ()
Returns whether this contains a valid match from a previous match or find operation.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc 012 aaabc");
System.out.println(matcher.hasMatch()); // false
{
System.out.println(matcher.find()); // true
System.out.println(matcher.hasMatch()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 0
System.out.println(result.end()); // 3
System.out.println(result.group()); // "abc"
}
{
System.out.println(matcher.find()); // true
System.out.println(matcher.hasMatch()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 8
System.out.println(result.end()); // 13
System.out.println(result.group()); // "aaabc"
}
System.out.println(matcher.find()); // false
System.out.println(matcher.hasMatch()); // false
boolean hasTransparentBounds ()
Queries the transparency of region bounds for this matcher.
final var pattern = Pattern.compile("\\by...");
final var input = "xyz12 yz34";
{
final var matcher = pattern.matcher(input);
System.out.println(matcher.hasTransparentBounds()); // false
// Sets the limits of this matcher's region.
System.out.println(input.substring(1, 10)); // "yz12 yz34"
matcher.region(1, 10);
System.out.println(matcher.find()); // true
final var result = matcher.toMatchResult();
System.out.println(result.group()); // "yz12"
}
{
final var matcher = pattern.matcher(input);
matcher.useTransparentBounds(true);
System.out.println(matcher.hasTransparentBounds()); // true
matcher.region(1, 10);
// This matcher to use transparent bounds.
System.out.println(matcher.find()); // true
final var result = matcher.toMatchResult();
System.out.println(result.group()); // "yz34"
}
boolean hitEnd ()
Returns true if the end of input was hit by the search engine in the last match operation performed by this matcher.
final var pattern = Pattern.compile("cat");
final var matcher = pattern.matcher("one cat two cats in the yard");
while (matcher.find()) {
System.out.println("-------");
System.out.println("hitEnd : " + matcher.hitEnd());
final var result = matcher.toMatchResult();
System.out.println("start : " + result.start());
System.out.println("end : " + result.end());
}
// Result
// ↓
//-------
//hitEnd : false
//start : 4
//end : 7
//-------
//hitEnd : false
//start : 12
//end : 15
System.out.println(matcher.hitEnd()); // true
boolean lookingAt ()
Attempts to match the input sequence, starting at the beginning of the region, against the pattern.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("aaabc");
System.out.println(matcher.lookingAt()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 0
System.out.println(result.end()); // 5
System.out.println(result.group()); // "aaabc"
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abcXYZ");
System.out.println(matcher.lookingAt()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 0
System.out.println(result.end()); // 3
System.out.println(result.group()); // "abc"
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("012abc");
System.out.println(matcher.lookingAt()); // false
boolean matches ()
Attempts to match the entire region against the pattern.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc");
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 0
System.out.println(result.end()); // 3
System.out.println(result.group()); // "abc"
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("aaaaabc");
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 0
System.out.println(result.end()); // 7
System.out.println(result.group()); // "aaaaabc"
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("012abc");
System.out.println(matcher.matches()); // false
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abcZ");
System.out.println(matcher.matches()); // false
Map<String,Integer> namedGroups ()
Returns an unmodifiable map from capturing group names to group numbers.
final var pattern = Pattern.compile("(?<A>abc|efg)_012_(?<B>x..)");
final var matcher = pattern.matcher("abc_012_xyz");
System.out.println(matcher.matches()); // true
System.out.println("-- groups --");
for (final var entry : matcher.namedGroups().entrySet()) {
System.out.println("entry : " + entry);
final var num = entry.getValue();
System.out.println(" group : " + matcher.group(num));
}
// Result
// ↓
//true
//-- groups --
//entry : A=1
// group : abc
//entry : B=2
// group : xyz
Pattern pattern ()
Returns the pattern that is interpreted by this matcher.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("aaabc");
System.out.println(matcher.pattern()); // "a+bc"
static String quoteReplacement (String s)
Returns a literal replacement String for the specified String.
final var pattern = Pattern.compile(" ");
final var matcher = pattern.matcher("abc 012 xyz");
final var replacement = Matcher.quoteReplacement("$");
System.out.println(replacement); // "\$"
final var ret = matcher.replaceAll(replacement);
System.out.println(ret); // "abc$012$xyz"
Matcher region (int start, int end)
Sets the limits of this matcher's region.
final var pattern = Pattern.compile("a+bc+");
final var input = "aaabccc";
final var matcher = pattern.matcher(input);
System.out.println(input.substring(2, 6)); // "abcc"
matcher.region(2, 6);
System.out.println(matcher.regionStart()); // 2
System.out.println(matcher.regionEnd()); // 6
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.group()); // "abcc"
// An example without the region method.
final var pattern = Pattern.compile("a+bc+");
final var matcher = pattern.matcher("aaabccc");
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.group()); // "aaabccc"
int regionEnd ()
Reports the end index (exclusive) of this matcher's region.
final var pattern = Pattern.compile("a+bc+");
final var input = "aaabccc";
final var matcher = pattern.matcher(input);
System.out.println(input.substring(2, 6)); // "abcc"
matcher.region(2, 6);
System.out.println(matcher.regionStart()); // 2
System.out.println(matcher.regionEnd()); // 6
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.group()); // "abcc"
// An example without the region method.
final var pattern = Pattern.compile("a+bc+");
final var matcher = pattern.matcher("aaabccc");
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.group()); // "aaabccc"
int regionStart ()
Reports the start index of this matcher's region.
final var pattern = Pattern.compile("a+bc+");
final var input = "aaabccc";
final var matcher = pattern.matcher(input);
System.out.println(input.substring(2, 6)); // "abcc"
matcher.region(2, 6);
System.out.println(matcher.regionStart()); // 2
System.out.println(matcher.regionEnd()); // 6
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.group()); // "abcc"
// An example without the region method.
final var pattern = Pattern.compile("a+bc+");
final var matcher = pattern.matcher("aaabccc");
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.group()); // "aaabccc"
String replaceAll (String replacement)
Replaces every subsequence of the input sequence that matches the pattern with the given replacement string.
final var pattern = Pattern.compile("a*b");
final var matcher = pattern.matcher("aabfooaabfooabfoob");
final var result = matcher.replaceAll("-");
System.out.println(result); // "-foo-foo-foo-"
String replaceAll (Function<MatchResult,String> replacer)
Replaces every subsequence of the input sequence that matches the pattern with the result of applying the given replacer function to the match result of this matcher corresponding to that subsequence.
final var pattern = Pattern.compile("dog");
final var matcher = pattern.matcher("zzzdogzzzdogzzz");
final var result = matcher.replaceAll(mr -> mr.group().toUpperCase());
System.out.println(result); // "zzzDOGzzzDOGzzz"
String replaceFirst (String replacement)
Replaces the first subsequence of the input sequence that matches the pattern with the given replacement string.
final var pattern = Pattern.compile("dog");
final var matcher = pattern.matcher("zzzdogzzzdogzzz");
final var result = matcher.replaceFirst("cat");
System.out.println(result); // "zzzcatzzzdogzzz"
String replaceFirst (Function<MatchResult,String> replacer)
Replaces the first subsequence of the input sequence that matches the pattern with the result of applying the given replacer function to the match result of this matcher corresponding to that subsequence.
final var pattern = Pattern.compile("dog");
final var matcher = pattern.matcher("zzzdogzzzdogzzz");
final var result = matcher.replaceFirst(mr -> mr.group().toUpperCase());
System.out.println(result); // "zzzDOGzzzdogzzz"
boolean requireEnd ()
Returns true if more input could change a positive match into a negative one.
final var pattern = Pattern.compile("abc$");
final var matcher = pattern.matcher("abc");
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "abc"
System.out.println(matcher.requireEnd()); // true
final var pattern = Pattern.compile("abc");
final var matcher = pattern.matcher("abcd");
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "abc"
System.out.println(matcher.requireEnd()); // false
Matcher reset ()
Resets this matcher.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc aabc");
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "abc"
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "aabc"
System.out.println(matcher.find()); // false
matcher.reset();
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "abc"
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "aabc"
System.out.println(matcher.find()); // false
Matcher reset (CharSequence input)
Resets this matcher with a new input sequence.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc aabc");
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "abc"
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "aabc"
System.out.println(matcher.find()); // false
matcher.reset("aaaabc");
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "aaaabc"
System.out.println(matcher.find()); // false
Stream<MatchResult> results ()
Returns a stream of match results for each subsequence of the input sequence that matches the pattern.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc 012 aabc");
final var stream = matcher.results();
stream.forEach(matchResult -> {
System.out.println(matchResult.group());
});
// Result
// ↓
// "abc"
// "aabc"
int start ()
Returns the start index of the previous match.
final var pattern = Pattern.compile("a+bc");
final var input = "aaaaabc";
final var matcher = pattern.matcher(input);
System.out.println(matcher.matches()); // true
final var start = matcher.start();
System.out.println(start); // 0
final var end = matcher.end();
System.out.println(end); // 7
final var group = input.substring(start, end);
System.out.println(group); // "aaaaabc"
final var pattern = Pattern.compile("a+bc");
final var input = "012abcXYZ";
final var matcher = pattern.matcher(input);
System.out.println(matcher.find()); // true
final var start = matcher.start();
System.out.println(start); // 3
final var end = matcher.end();
System.out.println(end); // 6
final var group = input.substring(start, end);
System.out.println(group); // "abc"
int start (int group)
Returns the start index of the subsequence captured by the given group during the previous match operation.
final var pattern = Pattern.compile("(abc|efg)_012_(x..)");
final var matcher = pattern.matcher("abc_012_xyz");
System.out.println(matcher.matches()); // true
System.out.println(matcher.start()); // 0
System.out.println(matcher.end()); // 11
System.out.println(matcher.group()); // "abc_012_xyz"
final var groupCount = matcher.groupCount();
System.out.println(groupCount); // 2
for (int i = 1; i <= groupCount; i++) {
System.out.println("------");
System.out.println("i : " + i);
System.out.println("start : " + matcher.start(i));
System.out.println("end : " + matcher.end(i));
System.out.println("group : " + matcher.group(i));
}
// Result
// ↓
//------
//i : 1
//start : 0
//end : 3
//group : abc
//------
//i : 2
//start : 8
//end : 11
//group : xyz
int start (String name)
Returns the start index of the subsequence captured by the given named-capturing group during the previous match operation.
final var pattern = Pattern.compile("(?<A>abc|efg)_012_(?<B>x..)");
final var matcher = pattern.matcher("abc_012_xyz");
System.out.println(matcher.matches()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 0
System.out.println(result.end()); // 11
System.out.println(result.group()); // "abc_012_xyz"
{
final var name = "A";
System.out.println(matcher.start(name)); // 0
System.out.println(matcher.end(name)); // 3
System.out.println(matcher.group(name)); // "abc"
}
{
final var name = "B";
System.out.println(matcher.start(name)); // 8
System.out.println(matcher.end(name)); // 11
System.out.println(matcher.group(name)); // "xyz"
}
MatchResult toMatchResult ()
Returns the match state of this matcher as a MatchResult.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc aabc");
{
System.out.println(matcher.find()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 0
System.out.println(result.end()); // 3
System.out.println(result.group()); // "abc"
}
{
System.out.println(matcher.find()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 4
System.out.println(result.end()); // 8
System.out.println(result.group()); // "aabc"
}
String toString ()
Returns the string representation of this matcher.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc aabc");
System.out.println(matcher.find()); // true
final var str = matcher.toString();
// java.util.regex.Matcher[pattern=a+bc region=0,8 lastmatch=abc]
System.out.println(str);
Matcher useAnchoringBounds (boolean b)
Sets the anchoring of region bounds for this matcher.
final var pattern = Pattern.compile("^abc xyz$");
final var input = "012 abc xyz";
{
final var matcher = pattern.matcher(input);
System.out.println(matcher.hasAnchoringBounds()); // true
// Sets the limits of this matcher's region.
System.out.println(input.substring(4, 11)); // "abc xyz"
matcher.region(4, 11);
System.out.println(matcher.find()); // true
final var result = matcher.toMatchResult();
System.out.println(result.start()); // 4
System.out.println(result.end()); // 11
System.out.println(result.group()); // "abc xyz"
}
{
final var matcher = pattern.matcher(input);
matcher.useAnchoringBounds(false);
System.out.println(matcher.hasAnchoringBounds()); // false
matcher.region(4, 11);
System.out.println(matcher.find()); // false
}
Matcher usePattern (Pattern newPattern)
Changes the Pattern that this Matcher uses to find matches with.
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("aabc xyz");
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "aabc"
System.out.println(matcher.find()); // false
matcher.usePattern(Pattern.compile("x.."));
System.out.println(matcher.find()); // true
System.out.println(matcher.group()); // "xyz"
Matcher useTransparentBounds (boolean b)
Sets the transparency of region bounds for this matcher.
final var pattern = Pattern.compile("\\by...");
final var input = "xyz12 yz34";
{
final var matcher = pattern.matcher(input);
System.out.println(matcher.hasTransparentBounds()); // false
// Sets the limits of this matcher's region.
System.out.println(input.substring(1, 10)); // "yz12 yz34"
matcher.region(1, 10);
System.out.println(matcher.find()); // true
final var result = matcher.toMatchResult();
System.out.println(result.group()); // "yz12"
}
{
final var matcher = pattern.matcher(input);
matcher.useTransparentBounds(true);
System.out.println(matcher.hasTransparentBounds()); // true
matcher.region(1, 10);
// This matcher to use transparent bounds.
System.out.println(matcher.find()); // true
final var result = matcher.toMatchResult();
System.out.println(result.group()); // "yz34"
}
Related posts
- API Examples