"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 puedo utilizar grupos de captura con nombre en Java antes de Java 7?

¿Cómo puedo utilizar grupos de captura con nombre en Java antes de Java 7?

Publicado el 2024-11-20
Navegar:265

How can I use named capture groups in Java before Java 7?

Grupos nombrados con expresiones regulares en Java

Los paquetes de expresiones regulares tienen limitaciones

paquete java.regex He confirmado que no hay soporte para grupos con nombre, así que avíseme qué bibliotecas de terceros lo admiten.

Busqué jregex, pero la última versión fue en 2002 y no funcionó para java5 (aunque lo probé de inmediato).

Soporte desde Java 7

Java 7 agregó soporte para grupos con nombre. Los componentes básicos para admitir grupos de captura con nombre son:

  • '(?capturando texto)"
  • "\k" para hacer referencia al grupo denominado "nombre"
  • " ${nombre}"
  • "Matcher.group(String nombre)"

Alternativas antes de Java 7

En Java 7 y versiones anteriores, existían las siguientes alternativas.

  • Google nombrado-regex
  • jregex

Biblioteca Regex2

La biblioteca Regex2 admite grupos con nombre Se extiende la clase java.util.regex.Pattern para crear.

Ejemplo

Cadena de entrada: "TEST 123"

Expresión regular: "(?\w ) (? \ d )"

Acceso:

matcher.group(1) == "PRUEBA"
matcher.group("iniciar sesión") == "PRUEBA"
matcher.name(1) == "iniciar sesión"

Reemplazar:

matcher.replaceAll ("aaaaa_$1_sssss_$2____") == "aaaaa_TEST_sssss_123____"
matcher.replaceAll("aaaaa_${login}_sssss_${id}____") == "aaaaa_TEST_sssss_123____"

Ú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