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

293
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 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