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

294
Visualizações
¿Hay un RegEx para extraer valores separados por punto y coma de una cadena... que posiblemente contenga una cadena con punto y coma?

Me gustaría extraer valores de una cadena de valores separados por punto y coma que también podrían contener punto y coma pero no como separador. El RegEx que encontré en este sitio web (perdí la publicación) está casi completo porque separa la clave y su valor.

Ejemplo: my.parameter 10; the.foo "Procedural Map"; pve; server.description "This; is \"my\", my description,.\n"

Resultado actual con [^; "]+|"(?:\\"|[^"])*"/g

 [ 'server.seed', '10', 'pve', 'server.level', '"Procedural Map"', 'server.description', '"This; is \\"my\\", server; description,."' ]

Resultado deseado

 [ 'my.parameter 10', 'the.foo "Procedural Map"', 'pve', 'server.description "This; is \"my\", server; description,.\n"' ]

¿Me pueden ayudar a mejorar el RegEx para agrupar el parámetro y su valor?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Encontré una solución reemplazando el separador por el separador ASCII (␟) y luego dividiendo el resultado.

 const separatorPattern = /; (?=([^"]*"[^"]*")*[^"]*$)/g; const myRawString = "server.seed 10; server.pve, server.level \"Procedural Map\"; server.description \"This; is \\\"my\\\", server; description,.\""; const replacedSeparator = myRawString.replace(separatorPattern, "␟"); const parameters = replacedSeparator.split("␟"); console.log(parameters); /*[ 'server.seed 10', 'server.pve, server.level "Procedural Map"', 'server.description "This; is \\"my\\", server; description,."' ]*/
about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar un patrón repetitivo para hacer coincidir primero cualquier carácter excepto el ; y luego, opcionalmente, haga coincidir desde una apertura hasta el cierre de comillas dobles y haga coincidir las comillas dobles escapadas en el medio.

Después de eso, opcionalmente, repita la clase de caracteres [^";\\]* para que coincida también con lo que viene después de la comilla doble de cierre.

 [^;"\\]+(?:"(?:[^"\\]*(?:\\.[^"\\]*)*)"[^";\\]*)*
  • [^;"\\]+ Coincidencia 1+ veces cualquier carácter excepto ; " \
  • (?: Grupo de no captura para repetir como un todo
    • " literalmente
    • (?: grupo de no captura
      • [^"\\]* Coincide 0+ veces con cualquier carácter excepto " \
      • (?:\\.[^"\\]*)* Opcionalmente, repite la coincidencia de \ y cualquier carácter seguido de 0+ veces cualquier carácter excepto " y \
    • ) Cerrar el grupo de no captura
    • " literalmente
    • [^";\\]* Opcionalmente coincide con cualquier carácter excepto " ; \
  • )* Cierre el grupo externo de no captura y, opcionalmente, repita

Demostración de expresiones regulares

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