ultimo - replace javascript
¿Cómo dividir en espacios en blanco no entre comillas? (3)
El problema es que necesita excluir entradas dentro del grupo. En lugar de usar un lookahead negativo, podrías hacerlo así:
(/S*(?:([''"`]).*?/2)/S*)/s?|/s
Básicamente lo que hace es:
- captura cualquier carácter que no sea de espacios en blanco
- que puede contener una cadena citada
- y es opcionalmente seguido directamente por cualquier espacio no en blanco (por ejemplo, una coma después de la cita).
- luego coincide con un espacio en blanco posterior opcional
O
- coincide con un solo espacio en blanco
El grupo de captura 1 contendrá una secuencia lo más larga posible de todos los caracteres que no sean de espacio en blanco (a menos que estén entre comillas). Esto se puede usar con el grupo de reemplazo /1/n
para reemplazar los espacios en blanco deseados con una nueva línea.
Regex101: https://regex101.com/r/A4HswJ/1
JSFiddle: http://jsfiddle.net/u1kjudmg/1/
Estoy intentando dividir una cadena en espacios en blanco solamente ( /s
), pero eso no está entre una sección "citada".
Estoy haciendo coincidir todo el texto entre estas secciones citadas de la siguiente manera:
([''"`]).*?/1
Sin embargo, cuando trato de agregar esto como una anticipación negativa, para dividir solo en espacios en blanco fuera de esas comillas, no puedo hacer que funcione:
/s(?!([''"`]).*?/1)
¿Cómo puedo dividir solo en los espacios en blanco que no están en "comillas"?
Utilizaría un enfoque más simple, sin necesidad de funciones avanzadas:
''[^'']*''|"[^"]*"|`[^`]*`|/S*
sentido:
- una sección de una sola cita
''[^'']*''
- o
|
una sección de doble cita"[^"]*"
- o
|
una sección reutilizada (no puede colocarla en línea en el descuento SO) - o
|
una sección no cotizada/S+
Esto separará también las partes citadas. Si esto no se quiere, puedes usar
("[^"]*"|''[^'']*''|`[^`]*`|/S)+
es decir, encontrar secuencias de tokens donde cada token es un espacio no blanco o una sección citada.
/s(?=(?:[^''"`]*([''"`])[^''"`]*/1)*[^''"`]*$)
Puede usar esta expresión regular con anticipación para dividirla. Vea la demostración.
https://regex101.com/r/5I209k/4
o si son tipos mixtos de garrapatas.