tengo actualmente esta expresión regular para dividir cadenas por todos los espacios en blanco, a menos que sea en un segmento citado:dividir una cadena por espacios en blanco, manteniendo los segmentos citados, permitiendo que escapó cotizaciones
keywords = 'pop rock "hard rock"';
keywords = keywords.match(/\w+|"[^"]+"/g);
console.log(keywords); // [pop, rock, "hard rock"]
Sin embargo, también quiero que se ser posible tener cotizaciones en palabras clave, así:
keywords = 'pop rock "hard rock" "\"dream\" pop"';
esto debería devolver
[pop, rock, "hard rock", "\"dream\" pop"]
¿Cuál es la forma más fácil de lograr esto?
le sugiero que utilice '' \\ en lugar de '\\" 'porque las barras invertidas se pueden escapar también, y usted no me gustaría. señorita '" foo \\\\ "'. –
@Tim - idea interesante al principio, pero no estoy seguro de que sea necesario - ¿''^^ no manejaría estos casos? ¿Me estoy perdiendo algo? – Kobi
Considere esto: En la cadena '" \\ "" foo "' (solo dos backlashes para mayor claridad), el primer '" 'se correspondería con el literal' "' al comienzo de la expresión regular. Entonces el '[^"] 'coincidiría con el primero \. Entonces, el '\" 'restante sería emparejado por' \\ "' (porque viene primero en la alternancia). Entonces '[^"] 'coincidiría con el espacio y' '' (al final de la expresión regular) coincidiría con la cita de apertura de '" foo "', interrumpiendo el análisis sintáctico. –