regular-expressions – ¿Por qué no se escapan las comillas dobles en el comando replace-regexp?

Pregunta:

Tengo un texto como este:

myvariable = ABCD,
EFGH,
IJKL,
~subsection1
MNOP,
QRST,
UVWX,
YZ

Lo que quiero transformar en:

myvariable = "ABCD,"
"EFGH,\n" \
"IJKL,\n" \
"~subsection1\n" \
"MNOP,\n" \
"QRST,\n" \
"UVWX,\n" \
"YZ"

Para insertar un carácter " al principio de cada línea, hago lo siguiente:

CM-% ^.* RET "\& RET

Pero agregar \n" \ al final de cada línea es más complicado. Intenté:

Mx replace-regexp RET $ RET \\n\\" \\ RET

Pero eso da como resultado:

myvariable = ABCD,\n\" \
EFGH,\n" \
...

Entonces tienes que hacerlo de esta manera:

Mx replace-regexp RET $ RET \\n" \\ RET

¿Por qué?

Mi pensamiento era que el " personaje tenía que escapar con \ , pero obviamente ese no es el caso. ¿Por qué tengo que escapar \ pero no " ?

Respuesta:

Puede hacer coincidir el comienzo de la línea solo con ^ y "reemplazarlo" con " .

En cuanto a la barra invertida: dado que la barra invertida es el carácter de escape en Emacs y desea insertar una barra invertida literal, debe escapar del carácter de escape.

El hecho de que no tenga que escapar de las comillas dobles aquí es porque está usando un comando ( replace-regexp ). Si escribiera la expresión regular como parte de un programa Emacs Lisp, sería una cadena y entonces también necesitaría escapar de las comillas dobles.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım