hay un área de texto y desea extraer con key:value (algo así como la imagen de abajo)
Tengo una expresión regular pero no funciona como se esperaba
/([^\s][a-zA-Z!]+:(\s)?"?([a-z0-9\s.]+)"?[^ $])/gi si el usuario ingresa la siguiente cadena en ese momento, la expresión regular rompe la key:value .
is:"browser" browser: "chrome 11.11 V" node: error type:"Error"
grupo esperado:
is:"browser" browser: "chrome 11.11 V" node: error type:"Error"Puedes usar
const text = 'is:"browser" browser: "chrome 11.11 V" node: error type:"Error"'; const re = /(\w+):\s*(?:"([^"]*)"|(\S+))/g; let dict = {}, m; while(m = re.exec(text)) { dict[m[1]]=(m[3] || m[2]); } console.log(dict); // Or just get all matches: console.log(text.match(re))Vea la demostración de expresiones regulares . Detalles :
(\w+) - Grupo 1: uno o más caracteres de palabra: - dos puntos\s* - cero o más espacios en blanco(?:"([^"]*)"|(\S+)) - cualquiera de"([^"]*)" - " , 0+ sin comas (capturado en el Grupo 2), "| - o(\S+) - Grupo 3: uno o más caracteres sin espacios en blanco.expresión regular:
/([a-zA-Z!]+:\s*[" ]?([a-z0-9\s.]+)[" $])/giTexto:
sdfd:"dsffs" dsfd: "dsf demo" sfd: dsf fdsff:"fdsfsdf"Lista:
sdfd:"dsffs" dsfd: "dsf demo" sfd: dsf fdsff:"fdsfsdf"