Clase Java Matcher

En JavaMatcherla clase esjava.util.regexuna clase importante en el paquete, que se utiliza para realizar diversas operaciones de coincidencia sobre cadenas.MatcherLa clase en sí no se puede instanciar directamente, sino que necesitaPatternde la clasematcher()método para crearla.

MatcherLas funciones principales de la clase incluyen:

  • Realizar operaciones de coincidencia de expresiones regulares
  • Buscar subsecuencias en la cadena que coincidan con el patrón
  • Reemplazar el texto coincidente

Crear objeto Matcher

Para usarMatcherla clase, primero debe crear unPatternobjeto, y luego a través de él crearMatcherobjeto:

Ejemplo

import java.util.regex.*;

// Crear objeto Pattern
Pattern pattern = Pattern.compile("a*b");

// Crear objeto Matcher
Matcher matcher = pattern.matcher("aaaaab");

Métodos comunes de la clase Matcher


Métodos de operación de coincidencia

Método matches()

matches()El método intenta hacer coincidir toda la secuencia de entrada con el patrón:

Ejemplo

boolean result = matcher.matches(); // Devuelve true o false

Método lookingAt()

lookingAt()El método intenta hacer coincidir el patrón desde el comienzo de la secuencia de entrada:

Ejemplo

boolean result = matcher.lookingAt(); // No es necesario hacer coincidir toda la cadena

Método find()

find()El método busca la siguiente subsecuencia coincidente en la secuencia de entrada:

Ejemplo

while(matcher.find()) {
    System.out.println(Encontrada coincidencia: + matcher.group());
}

Métodos para obtener información de coincidencia

Método group()

group()El método devuelve la subsecuencia de entrada que coincidió en la operación de coincidencia anterior:

Ejemplo

String matchedText = matcher.group();

Métodos start() y end()

start()yend()Los métodos devuelven los índices de inicio y fin de la coincidencia anterior:

Ejemplo

int start = matcher.start(); // Posición de inicio de la coincidencia
int end = matcher.end();     // Posición de fin de la coincidencia

Método groupCount()

groupCount()Devuelve el número de grupos de captura en el patrón de este matcher:

Ejemplo

int count = matcher.groupCount();

Métodos de operación de reemplazo

Método replaceAll()

replaceAll()El método reemplaza cada subsecuencia de la secuencia de entrada que coincide con el patrón:

Ejemplo

String result = matcher.replaceAll("replacement");

Método replaceFirst()

replaceFirst()El método reemplaza la primera subsecuencia de la secuencia de entrada que coincide con el patrón:

Ejemplo

String result = matcher.replaceFirst("replacement");

Ejemplo

A continuación se muestra un ejemplo completo que demuestra cómo usarMatcherla clase:

Ejemplo

import java.util.regex.*;

public class MatcherExample {
    public static void main(String[] args) {
        String text = "The quick brown fox jumps over the lazy dog";
        Pattern pattern = Pattern.compile("\\b\\w{4}\\b"); // Coincidir palabras de 4 letras
        Matcher matcher = pattern.matcher(text);
       
        System.out.println(Texto original: + text);
        System.out.println(Palabras de 4 letras coincidentes:);
       
        while(matcher.find()) {
            System.out.println(Encontrado ' + matcher.group() +
                              ' en la posición + matcher.start() + "-" + (matcher.end()-1));
        }
       
        // Reemplazar todas las palabras de 4 letras por "****"
        String replaced = matcher.replaceAll("****");
        System.out.println("\nTexto después del reemplazo: + replaced);
    }
}

Resultado de salida

原始文本: The quick brown fox jumps over the lazy dog
匹配4字母单词:
找到 'quick' 在位置 4-8
找到 'brown' 在位置 10-14
找到 'jumps' 在位置 20-24
找到 'over' 在位置 26-29
找到 'lazy' 在位置 35-38

替换后的文本: The **** **** fox **** **** the **** dog

Resumen

De JavaMatcherLa clase proporciona potentes funciones de coincidencia de expresiones regulares, a través de las cuales se puede:

  1. Verificar si una cadena coincide con un patrón específico
  2. Buscar coincidencias de patrones en una cadena
  3. Extraer subcadenas coincidentes
  4. Reemplazar el texto coincidente

DominarMatcherLa clase es muy importante para el procesamiento de cadenas y la coincidencia de patrones de texto, y es una herramienta muy práctica en la programación Java.

Métodos de operación de coincidencia

Método Descripción
boolean matches() Intenta hacer coincidir toda la región con el patrón
boolean lookingAt() Intenta hacer coincidir el patrón desde el inicio de la región
boolean find() Intenta buscar la siguiente subsecuencia coincidente
boolean find(int start) Busca la siguiente coincidencia desde la posición especificada

Métodos para obtener resultados de coincidencia

Método Descripción
String group() Devuelve la subsecuencia de la coincidencia anterior
String group(int group) Devuelve el contenido coincidente del grupo de captura especificado
String group(String name) Devuelve el contenido coincidente del grupo de captura nombrado (Java 7+)
int groupCount() Devuelve el número de grupos de captura en el patrón
int start() Devuelve el índice de inicio de la coincidencia anterior
int start(int group) Devuelve el índice de inicio de la coincidencia del grupo especificado
int end() Devuelve el índice de fin de la coincidencia anterior
int end(int group) Devuelve el índice de fin de la coincidencia del grupo especificado

Métodos de operación de reemplazo

Método Descripción
Matcher appendReplacement(StringBuffer sb, String replacement) Realiza una operación de reemplazo no terminal
StringBuffer appendTail(StringBuffer sb) Realiza una operación de reemplazo terminal
String replaceAll(String replacement) Reemplaza todas las subsecuencias coincidentes
String replaceFirst(String replacement) Reemplaza la primera subsecuencia coincidente
static String quoteReplacement(String s) Devuelve la cadena de reemplazo literal

Métodos de control de región

Método Descripción
Matcher region(int start, int end) Establece la región de búsqueda del matcher
int regionStart() Devuelve el índice de inicio de la región del matcher
int regionEnd() Devuelve el índice de fin de la región del matcher
boolean hasTransparentBounds() Comprueba si se utilizan límites transparentes
Matcher useTransparentBounds(boolean b) Establece si se utilizan límites transparentes
boolean hasAnchoringBounds() Comprueba si se utilizan límites anclados
Matcher useAnchoringBounds(boolean b) Establece si se utilizan límites anclados

Otros métodos

Método Descripción
Pattern pattern() Devuelve el patrón de este matcher
Matcher reset() Restablece el matcher
Matcher reset(CharSequence input) Restablece el matcher con una nueva entrada
boolean hitEnd() Indica si el matcher ha llegado al final de la entrada
boolean requireEnd() Indica si se necesita más entrada para realizar la coincidencia
Otras extensiones