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

95
Vistas
Cadena dividida Regex en un conjunto específico de caracteres

Supongamos que tengo una cadena de esta naturaleza Set 1 (2) Set 2 (2) Set 3 (2) Set 4 (2) [Choose Two] . ¿Cómo puedo hacer una expresión regular que comience después ( es importante que sea después o simplemente puedo agregarla de nuevo ) cada carácter y, opcionalmente, termine en un carácter ] , por lo que dividir la cadena se vería así?

 Set 1 (2) Set 2 (2) Set 3 (2) Set 4 (2) [Choose Two] -> [Set 1 (2)], [Set 2 (2)], [Set 3 (2)], [Set 4 (2)]

Puede haber algunos caracteres vacíos y espacios en blanco finales en la matriz creada cuando se usan expresiones regulares, pero puedo eliminarlos. Mi intento actual es algo así como /\)(\s+).+(\]?)/gm pero debido a que .+ es codicioso, va hasta el final para cada coincidencia de la siguiente manera:

 Set 1 (2) Set 2 (2) Set 3 (2) Set 4 (2) [Choose Two] -> Set 1 (2{) Set 2 (2) Set 3 (2) Set 4 (2) [Choose Two]} -> [Set 1 (2]

También incluye el ) cuando se divide, lo cual no es deseable.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Probar:

 (?<!\S).*?\) \b.*\)

Ver una demostración en línea


  • (?<!\S) = Negative lookbehind para afirmar la posición no está precedida por un carácter que no sea un espacio en blanco;
  • .*?\) - 0+ (perezosos) caracteres hasta un paréntesis de cierre literal.

La diferencia con la alternativa \b.*\) es usar un límite de palabras, pero no estoy seguro de si eso va bien con sus datos reales.


 var s = 'Set 1 (2) Set 2 (2) Set 3 (2) Set 4 (2) [Choose Two]'; var m = s.match(/(?<!\S).*?\)/g); console.log(m)

about 4 years ago · Juan Pablo Isaza Denunciar

0

 const s = "Set 1 (2) Set 2 (2) Set 3 (2) Set 4 (2) [Choose Two]"; const m = s.match(/[^)]+(?:\))/g); console.log(m)

Para manejar el espacio en blanco inicial:

 const s = "Set 1 (2) Set 2 (2) Set 3 (2) Set 4 (2) [Choose Two]"; const m = s.match(/(?<= |^)[^)]+(?:\))/g); console.log(m)

https://regex101.com/r/qG6G57/1

about 4 years ago · Juan Pablo Isaza Denunciar

0

Lo más simple sería usar String.split con esta expresión regular:

 /(?<=\))/g

Simplemente busca un ) y luego divide el texto en una matriz.

Sin embargo, luego debe eliminar el último elemento de la matriz (que contendrá [Choose Two] ).

Entonces tienes una matriz con cada Set.

Puedes jugar con él aquí .

about 4 years ago · Juan Pablo Isaza 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