Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

425
Vistas
Regex, obtener todos los hipervínculos

Trato de averiguar cómo obtener 2 coincidencias de String Bla bla bla [https://google.com|Google] bla bla bla [https://youtube.com|Youtube]

Quiero obtener 2 coincidencias: [https://google.com|Google], [https://youtube.com|Youtube] . Mi expresión regular se ve así: \[.*\|.*\] y con ella solo obtengo una coincidencia: [https://google.com|Google] bla bla bla [https://youtube.com|Youtube] por lo que es una respuesta incorrecta. ¿Cómo obtener la respuesta correcta?

PS google y youtube: el ejemplo codificado. Obtengo una matriz de datos con más de 1000 entradas, por lo que necesito una solución universal.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puedes usar

 \[([^\]\[|]*)\|([^\]\[]*)]

Vea la demostración de expresiones regulares . Detalles:

  • \[ - un [ carácter
  • ([^\]\[|]*) - Grupo 1: cualquier cero o más caracteres que no sean [ , ] y |
  • \| - un | carbonizarse
  • ([^\]\[]*) - Grupo 2: cualquier cero o más caracteres que no sean [ y ]
  • ] - un ] carácter.

En Java, utilice

 String regex = "\\[([^\\]\\[|]*)\\|([^\\]\\[]*)]";

Vea la demostración de Java :

 String s = "Bla bla bla [https://google.com|Google] bla bla bla [https://youtube.com|Youtube]"; String regex = "\\[([^\\]\\[|]*)\\|([^\\]\\[]*)]"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(s); while (matcher.find()){ System.out.println("Match: " + matcher.group(0)); System.out.println("Group 1: " + matcher.group(1)); System.out.println("Group 2: " + matcher.group(2)); }

Producción:

 Match: [https://google.com|Google] Group 1: https://google.com Group 2: Google Match: [https://youtube.com|Youtube] Group 1: https://youtube.com Group 2: Youtube
over 4 years ago · Santiago Trujillo Denunciar

0

¿Necesitas hacer que el cuantificador * sea perezoso agregando ? marca, aquí hay un ejemplo:

 String s = "Bla bla bla [https://google.com|Google] bla bla bla [https://youtube.com|Youtube]"; Pattern p = Pattern.compile("\\[.*?\\]"); Matcher matcher = p.matcher(s); while(matcher.find()){ System.out.println(matcher.group()); }

PRODUCCIÓN :

 [https://google.com|Google] [https://youtube.com|Youtube]
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda