Ich versuche, zu suchen und durch Regexs zu ersetzen .
Angenommen, ich habe ein foreach(foo1.txt, foo2.txt, foo3.txt, foo4.txt)
.
Und ich möchte "um jeden Punkt in der Liste" setzen.
Ich dachte - aus der Dokumentation - dass diese Regex funktionieren würde
(foo[1-4]\.txt) -> "\&"
.
Aber es tut es nicht. Was mache ich falsch?
Beachten Sie, dass Klammern und Klammern in einer Suche regexp, aber nicht in der ersetzen regexp
-Eigenschaft entfernt werden müssen ("zusätzliche Schrägstriche")Die Escapes sind erforderlich, weil der Lisp-Parser die Regex vor der Regex-Engine sieht.
Aber wenn Sie programmgesteuert schreiben (im Gegensatz zu einem interaktiven Eintrag), müssen Sie den Escape-Zeichen entkommen! ay-yi-yi ....
%Vor%die entkommenen Parens sind entkommen, weil sie Gruppierung sind, sind die unescaped Parens buchstäblich parens.
Vielleicht möchten Sie sich den Emacs Wiki Regex Crash-Kurs und Effektive Emacs-Regex-Sektion von Steve Yegge .
Sie haben bereits die richtige Antwort über die Regexp erhalten, aber in diesem Fall wäre es wahrscheinlich einfacher, stattdessen Makros zu verwenden. Setzen Sie den Punkt an den Anfang des Vornamens und geben Sie Folgendes ein:
%Vor%Das heißt, Makro aufzeichnen, Zitat einfügen, zwei Wörter vorwärts gehen, Zitat einfügen, zwei Zeichen vorwärts für das nächste Element gehen und das Makro aufzeichnen.
Führen Sie dann das Makro mit C-x e
aus. Um dies zu wiederholen, drücken Sie einfach e
erneut.
(In Emacs 23 können Sie F3 anstelle von " C-x (
" und F4 anstelle von " C-x )
" und " C-x e
" verwenden.)