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

251
Visualizações
Expresiones regulares: uso de múltiples búsquedas para dar formato a bloques de JSON

NB: Esta pregunta se hace únicamente con fines de aprendizaje. Soy muy consciente de que el problema específico planteado puede resolverse de manera trivial en cualquier editor de código moderno.

Me encanta el poder de las expresiones regulares, pero nunca he entendido bien cómo usar sus funciones más avanzadas, especialmente las miradas. Después de dos horas de búsqueda SO y Google, además de usar regexr.com, se me ocurrió lo siguiente:

 // Search regex: (?<=\[\n *\{\n)(?<= {4})(.*\n)* // Replace regex: [{\n$&] // Should take the following JSON object array: [ { "prop1": val1, "prop2": val2, // ...arbitrary number of props }, // ...arbitrary number of objects matching the above structure ] And format it like so: [{ // first object's opening brace adjacent to opening bracket // ...first object's props }, { // ...other objects' props }] // last object's closing brace adjacent to closing bracket

El segundo lookbehind es un intento de eliminar la sangría de cada línea de apoyo y las líneas que cierran cada objeto y abren el siguiente. Pero parece romper todo el asunto.

Sin él, obtengo un resultado casi perfecto , pero las líneas no están sangradas y la nueva línea después de la llave de cierre del objeto final también coincide erróneamente, así (consulte el enlace para ver un ejemplo más completo):

 [{ "prop1": val1, "prop2: val2 }, { "prop1": val1, "prop2: val2 } ]
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Para su entrada específica, puede eliminar todas las coincidencias de

 /^ |(?<=\[)[ \n]*(?=\{)|(?<=\})[ \n]*(?=\])/gm

Consulte el enlace RegExr . Alternativamente, reemplace todas las coincidencias de

 /^ |(\[)[ \n]*(\{)|(\})[ \n]*(\])/gm

por $1$2$3$4 .

Pero eso solo funciona si la entrada tiene el formato exacto que se muestra en su pregunta y si las cadenas (claves o valores) no contienen { . "Poder de las expresiones regulares" es una buena palabra clave, ya que las expresiones regulares clásicas carecen del poder para procesar llaves anidadas arbitrariamente. No están diseñados para procesar gramáticas de Tipo II como JSON.

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