Java : Matcher (regex) con ejemplos

Matcher (Java SE 22 & JDK 22) en Java con ejemplos.
Encontrará ejemplos de código en la mayoría de los métodos de Matcher.

Nota :


Summary

Un motor que realiza operaciones de coincidencia en una secuencia de caracteres interpretando un patrón. (Traducción automática)

Class diagram

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)

Implementa un paso de agregar y reemplazar no terminal. (Traducción automática)

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)

Implementa un paso de agregar y reemplazar no terminal. (Traducción automática)

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)

Implementa un paso de agregar y reemplazar terminal. (Traducción automática)

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)

Implementa un paso de agregar y reemplazar terminal. (Traducción automática)

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 ()

Devuelve el desplazamiento después del último carácter coincidente. (Traducción automática)

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)

Devuelve el desplazamiento después del último carácter de la subsecuencia capturada por el grupo dado durante la operación de coincidencia anterior. (Traducción automática)

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)

Devuelve el desplazamiento después del último carácter de la subsecuencia capturada por el grupo de captura nombrado dado durante la operación de coincidencia anterior. (Traducción automática)

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 ()

Intenta encontrar la siguiente subsecuencia de la secuencia de entrada que coincide con el patrón. (Traducción automática)

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)

Restablece este comparador y luego intenta encontrar la siguiente subsecuencia de la secuencia de entrada que coincida con el patrón, comenzando en el índice especificado. (Traducción automática)

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 ()

Devuelve la subsecuencia de entrada que coincide con la coincidencia anterior. (Traducción automática)

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)

Devuelve la subsecuencia de entrada capturada por el grupo dado durante la operación de coincidencia anterior. (Traducción automática)

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)

Devuelve la subsecuencia de entrada capturada por el grupo de captura nombrado dado durante la operación de coincidencia anterior. (Traducción automática)

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 ()

Devuelve el número de grupos de captura en el patrón de este comparador. (Traducción automática)

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 ()

Consulta el anclaje de los límites de la región para este comparador. (Traducción automática)

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 ()

Devuelve si contiene una coincidencia válida de una operación de búsqueda o coincidencia anterior. (Traducción automática)

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 ()

Consulta la transparencia de los límites de la región para este comparador. (Traducción automática)

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 ()

Devuelve verdadero si el motor de búsqueda alcanzó el final de la entrada en la última operación de coincidencia realizada por este comparador. (Traducción automática)

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 ()

Intenta hacer coincidir la secuencia de entrada, comenzando desde el principio de la región, con el patrón. (Traducción automática)

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 ()

Intenta hacer coincidir toda la región con el patrón. (Traducción automática)

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 ()

Devuelve un mapa no modificable desde la captura de nombres de grupos hasta números de grupos. (Traducción automática)

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 ()

Devuelve el patrón que interpreta este comparador. (Traducción automática)

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)

Devuelve una cadena de reemplazo literal para la cadena especificada. (Traducción automática)

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)

Establece los límites de la región de este comparador. (Traducción automática)

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 ()

Informa el índice final (exclusivo) de la región de este comparador. (Traducción automática)

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 ()

Informa el índice de inicio de la región de este comparador. (Traducción automática)

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)

Reemplaza cada subsecuencia de la secuencia de entrada que coincida con el patrón con la cadena de reemplazo dada. (Traducción automática)

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)

Reemplaza cada subsecuencia de la secuencia de entrada que coincide con el patrón con el resultado de aplicar la función de reemplazo dada al resultado de coincidencia de este comparador correspondiente a esa subsecuencia. (Traducción automática)

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)

Reemplaza la primera subsecuencia de la secuencia de entrada que coincide con el patrón con la cadena de reemplazo dada. (Traducción automática)

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)

Reemplaza la primera subsecuencia de la secuencia de entrada que coincide con el patrón con el resultado de aplicar la función de reemplazo dada al resultado de coincidencia de este comparador correspondiente a esa subsecuencia. (Traducción automática)

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 ()

Devuelve verdadero si una entrada mayor podría convertir una coincidencia positiva en una negativa. (Traducción automática)

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 ()

Restablece este comparador. (Traducción automática)

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)

Restablece este comparador con una nueva secuencia de entrada. (Traducción automática)

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 ()

Devuelve un flujo de resultados de coincidencia para cada subsecuencia de la secuencia de entrada que coincide con el patrón. (Traducción automática)

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 ()

Devuelve el índice de inicio de la coincidencia anterior. (Traducción automática)

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)

Devuelve el índice de inicio de la subsecuencia capturada por el grupo dado durante la operación de coincidencia anterior. (Traducción automática)

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)

Devuelve el índice de inicio de la subsecuencia capturada por el grupo de captura nombrado dado durante la operación de coincidencia anterior. (Traducción automática)

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 ()

Devuelve el estado de coincidencia de este comparador como MatchResult. (Traducción automática)

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 ()

Devuelve la representación de cadena de este comparador. (Traducción automática)

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)

Establece el anclaje de los límites de la región para este comparador. (Traducción automática)

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)

Cambia el patrón que este comparador utiliza para encontrar coincidencias. (Traducción automática)

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)

Establece la transparencia de los límites de la región para este comparador. (Traducción automática)

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

To top of page