Tengo un archivo de texto con el siguiente contenido:
Prueba, [636,13,"be738jsk","algunos, texto",js]
Quiero leer este contenido en una matriz. Actualmente uso JavaScript con expresiones regulares para dividir en subcadenas directamente en una matriz. Como expresiones regulares tengo: line.split(/,\s\[|",|,"|","/);
El problema es que tengo algunas oraciones como en el ejemplo con un "," y no quiero dividirlas allí. Así que traté de decir en la expresión regular, "dividir después, y todo excepto los espacios en blanco". El problema es que también corta el "todo" después de ,
Ejemplo:
Prueba, [63737,33,"bla,blablba",737]
Cuando uso esta expresión regular:
Line.split(/,"|,\s\[|",|,[^\s]/); Luego se corta el 3 de 33 :(
Puedes usar
const text = 'Test, [636,13,"be738jsk","some, text",js], "[Blablba] Blablba"'; console.log( Array.from(text.matchAll(/\w+|"([^"]*)"/g), x => x[1] ?? x[0]) )Producción:
[ "Test", "636", "13", "be738jsk", "some, text", "js", "[Blablba] Blablba" ] Aquí, \w+|"([^"]*)" coincide con uno o más caracteres de palabras o con cero o más caracteres distintos de las comillas dobles (capturadas en el Grupo 1) entre comillas dobles. La x => x[1] ?? x[0] La parte x => x[1] ?? x[0] toma los valores del Grupo 1 si está definido, de lo contrario, mantiene el valor de coincidencia completo.