Necesito realizar una regex query replace, de modo que
fooen foo barcoincide, pero fooen foo bazno. Normalmente usaría regex mirar hacia adelante, por ejemplo foo(?=bar).
Sin embargo, ¿parece que Emacs no puede hacer esto? Vim parece capaz , pero el modo malvado en los spacemacs no puede.
regular-expressions
Heisenberg
fuente
fuente

Respuestas:
No, las expresiones regulares de Emacs no admiten aserciones arbitrarias de anticipación / retroceso de ancho cero.
nb Evil y Spacemacs (como todas las bibliotecas de elisp) son irrelevantes cuando se trata de preguntas sobre la implementación del lenguaje Emacs Lisp.
fuente
fooenfoobarpero no enfoobaz? Esta es una operación bastante común que pensé que debía haber una solución. ¿Quizás mirar hacia adelante y hacia atrás es el enfoque equivocado?foo\(bar\)conbaz\1será suficiente en todos los casos en quebarno contenía más partidos.foocon\,(if (looking-at "bar") "baz" \&)reemplazaráfooconbazsi el siguiente texto esbar(y reemplazarfoocon lofoocontrario). Que todavía no es lo mismo que solo coincidirfoocuando es seguidobar, pero es otra opción.