"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo funciona la captura de grupos en expresiones regulares de Java?

¿Cómo funciona la captura de grupos en expresiones regulares de Java?

Publicado el 2024-11-17
Navegar:105

How do Capturing Groups Work in Java Regular Expressions?

Comprensión de los grupos de captura de expresiones regulares de Java

En este fragmento de código, utilizamos la biblioteca de expresiones regulares (regex) de Java para extraer partes de una cadena. La expresión regular se define como "(.)(\d )(.)", donde:

  • (.*): Coincide con cualquier número de caracteres antes del siguiente grupo .
  • (\d): Coincide con cualquier número de dígitos después del grupo anterior.
  • (.*): Coincide con cualquier número de caracteres después del grupo anterior.

Ejecución de expresiones regulares

Cuando la expresión regular se ejecuta contra la cadena "¡Esta orden se realizó para QT3000! ¿Está bien?", produce los siguientes resultados:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

Comprensión de los cuantificadores codiciosos

El cuantificador predeterminado utilizado en la expresión regular es codicioso, lo que significa que coincide con tantos caracteres como sea posible para satisfacer el siguiente grupo. En este caso, ".*" coincide con toda la cadena hasta que se encuentra el primer dígito, sin dejar caracteres para el tercer grupo.

Uso de cuantificadores reacios

Para hacer coincidir sólo los caracteres necesarios, podemos utilizar un cuantificador reacio, indicado por un signo de interrogación. Reemplazar "(.)" con "(.?)" coincide con la menor cantidad de caracteres posible, lo que genera el siguiente resultado:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

Ventajas de capturar grupos

La captura de grupos nos permite extraer partes específicas de una cadena coincidente para su uso posterior. En este ejemplo, podemos acceder al valor coincidente de cada grupo a través del método "group()" del objeto "Matcher", como se demuestra en el siguiente fragmento de código:

Pattern pattern = Pattern.compile("(.*?)(\\d )(.*)");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
    System.out.println("group 1: "   matcher.group(1));
    System.out.println("group 2: "   matcher.group(2));
    System.out.println("group 3: "   matcher.group(3));
}
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3