Regex buscar y reemplazar todas las palabras

Reg-ex siempre me confunde, además de que la sintaxis súper simple es difícil de buscar en Google. Estoy usando reg-ex aquí estrictamente con buscar y reemplazar sin necesidad de ningún idioma para hacer algunos reg-ex solo quiero ahorrar tiempo editando una gran cantidad de datos :)

Tengo un archivo json enorme, estos son solo dos datos, pero es bueno para este ejemplo.

[
    {
       name: 'John',
       team: 'Wolves',
       team_id: 1,
       number: 24
    },
    {
       name: 'Kevin',
       team: 'Rockets',
       team_id: 1,
       number: 6
    }
]

Dentro de mi json, necesito poner comillas dobles sobre casi todos los pares clave: valor, los números son opcionales.

Necesito deshacerme de las comillas simples, luego poner comillas dobles sobre todo.

Resultado final luciendo así.

[
    {
       "name": "John",
       "team": "Wolves",
       "team_id": "1",
       "number": "24"
    },
    {
       "name": "Kevin",
       "team": "Rockets",
       "team_id": "1",
       "number": "6"
    }
]

Una vez más, los números son opcionales, pero sería bueno saber cómo citarlos dos veces.

Extra: recuerdo vagamente haber hecho algo como esto hace un tiempo, pero no puedo encontrar dónde encontré esa información. Esta sería una buena referencia. ¿Alguien tiene buenos enlaces a los conceptos básicos de expresiones regulares? Solo quiero ahorrar tiempo cuando trabajo con una gran cantidad de datos. Gracias.

preguntado el 03 de diciembre de 13 a las 13:12

Debe etiquetar el idioma para una mayor exposición y para que los usuarios sepan qué idioma está utilizando. -

Etiqueté buscar y reemplazar, en realidad lo cambió para que yo lo reemplace, pero ¿a qué idioma te refieres al json o al javascript que estoy usando? Esos realmente no importan, ¿verdad? La mayoría de los editores de texto vienen con buscar y reemplazar en ellos con una opción reg-ex que permite una edición de código más fácil. Ahí es donde usaré el reg-ex -

¿Usar texto sublime si eso importa? Solo quiero una sintaxis de búsqueda simple, y luego un reemplazo simple con sintaxis. He usado una sintaxis simple antes, pero es tan simple que es difícil de encontrar jajaja. -

javascript es una buena etiqueta para la exposición, si eso es lo que está usando. -

para TODAS sus necesidades de expresiones regulares: visibone.com/regular-expressions -

2 Respuestas

Intente algo parecido a esto:

(\w+):\s*('?)([^']+?)\2(?=[\n,]) y reemplazar por "\1": "\3"

Demostración: http://regex101.com/r/pX9xX6

Editar: recién probado en Sublime, parece funcionar bien.

Respondido el 03 de diciembre de 13 a las 13:12

Gracias, esto se ve un poco más claro, creo, todavía se ve confuso, déjame probar esto también, ¡gracias por la demostración! - Michael Joseph Aubry

Realmente me gusta ese enlace que explica la expresión regular ... Esto es genial 1+ tal vez pueda aprender un poco, pero aquí. - Michael Joseph Aubry

Marcó el sitio como favorito, apuesto a que será útil. Funcionó muy bien en el sitio, no pude hacerlo funcionar en sublime, probablemente algo que estaba haciendo. Acabo de pegar mi json en ese sitio y funcionó muy bien. - Michael Joseph Aubry

Me alegro de que haya funcionado. Si desea obtener más información, use el depurador para ver cómo funciona la expresión regular: regex101.com/r/rJ5qL5/#depurador -- Lo hice funcionar en sublime por cierto. - Firas Dib

Gracias, sí, la expresión regular parece confusa, pero apuesto a que no es tan mala, es bastante útil, así que gracias. - Michael Joseph Aubry

Bueno, la sintaxis exacta depende de la herramienta. si estuvieras usando vim, por ejemplo:

:%s/'\([^']*\)'/"\1"/g

y

:%s/^\([ ^I]*\)\([^ ^I]*\):/\1"\2":/

probablemente haría el truco, aunque le gustaría hacer una verificación manual de las cotizaciones citadas.

Respondido el 03 de diciembre de 13 a las 13:12

Genial, gracias, la expresión regular es poderosa pero parece tan confusa, creo que hay una cara en ese código que está sonriendo. Déjame intentarlo, apuesto a que funciona. - Michael Joseph Aubry

No pude hacerlo funcionar, probablemente no di suficientes especificaciones. Seguiré intentándolo a través de 1+ porque apuesto a que esto funciona, simplemente haciendo algo tonto de mi parte. - Michael Joseph Aubry

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.