Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

101
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda