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
// 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
Método lookingAt()
lookingAt()El método intenta hacer coincidir el patrón desde el comienzo de la secuencia de entrada:
Ejemplo
Método find()
find()El método busca la siguiente subsecuencia coincidente en la secuencia de entrada:
Ejemplo
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
Métodos start() y end()
start()yend()Los métodos devuelven los índices de inicio y fin de la coincidencia anterior:
Ejemplo
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
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
Método replaceFirst()
replaceFirst()El método reemplaza la primera subsecuencia de la secuencia de entrada que coincide con el patrón:
Ejemplo
Ejemplo
A continuación se muestra un ejemplo completo que demuestra cómo usarMatcherla clase:
Ejemplo
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:
- Verificar si una cadena coincide con un patrón específico
- Buscar coincidencias de patrones en una cadena
- Extraer subcadenas coincidentes
- 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 |