He estado jugando con emacs lisp, y quería escribir una pequeña función para buscar y reemplazar una expresión regular. Me costó bastante conseguir que la expresión regular funcione correctamente porque no me di cuenta de que todos los caracteres especiales deben tener doble escape al escribir código lisp (¡pero no cuando se usa query-replace-regexp de forma interactiva!).Emacs: las expresiones regulares en Lisp necesitan escaparse por dos veces, ¿por qué?
Así, por ejemplo, el uso de query-replace-regexp interactiva puede utilizar
^\(.*\)[\t]-.*$
pero al escribir código elisp que necesitas escapar de todo lo que de este modo:
^\\(.*\\)[\t]-.*$
que finalmente encontró una referencia a esto en un Steve Yegge article, pero me preguntaba si alguien sabía por qué es esto?
Dang, la cosa de escape de barra invertida acaba de recibirme cuando publiqué :) tuve que poner \\\\\ (para hacerlo bien – scottfrazer
Ok, eso tiene sentido. ¡Gracias! –
Lo mismo es t laur de cualquier idioma que no tenga soporte sintáctico directo para las expresiones regulares y las construya a través de cadenas literales (por ejemplo, Java, Javascript), ¿verdad? –