2010-08-18 17 views
17

Ich habe einen Emacs-Puffer, um den TextEmacs regexp-Builder funktioniert nicht ersetzen-regexp

a1b2c3 

mit dem regexp-Builder enthält, erstellen i die regexp

"b\\(2\\)" 

und sehen das Hervorheben der Übereinstimmung (b2, mit den 2 in einer anderen Farbe).

aber wenn ich den Ausdruck in replace-regexp einfügen, erhalten i 0 Matches. sowohl mit als auch ohne die Zitate. ein Spiel zu bekommen ich brauche

b\(2\) 

i denke, es zu verwenden ist etwas los hier zu entkommen, aber sicher muss ich etwas falsch machen werden. das manuelle Entkommen scheint den halben Punkt zu besiegen.

Antwort

27

regexp-builder können die regexp in mehreren Syntaxen zeigen. Standardmäßig verwendet es die Syntax, die für die Eingabe einer Emacs Lisp-Quelle (read-Syntax) geeignet ist, sodass die Regexp zwischen doppelte Anführungszeichen gesetzt wird und jeder umgekehrte Schrägstrich verdoppelt wird. Zur interaktiven Verwendung wählen Sie die string Syntax mit C-c C-i (reb-change-syntax).

+0

, die ordentlich ist, vielen Dank für diesen Hinweis – Hartmut

+2

ich durch diese Antwort wirklich verwirrt bin; Betrachten Sie dies: 'string [5string] ' nun stimmt regexp-builder die" 5 "(" jede Zahl, die von einer öffnenden spitzen Klammer ") mit" \\ [[0-9] "überein. Jetzt wenn ich 'M-x query-replace \\ [[0-9] RET plop 'bekomme ich nichts. Ich habe versucht \\ [\ [0-9 \] (funktioniert auch in Builder), nichts. Sie nicht angeben, wo ich angeblich 'C-c C-i‘ zu geben: in den regexp-Builder, in dem Minipuffer, während Sie es an anderer Stelle? Es stellte sich heraus war es in der regexp Bauer, aber dann bietet es mir 4 Möglichkeiten (lesen, rx, sregex, string), die man sollte ich wählen **, so dass Emacs versteht es eigene regexp-Syntax ist? ** – yPhil

+0

Wow die Kommentarsyntax entkommt die Escape Chars, die Kommentare über die Escape Chars unruhig machen werden :) Ernsthaft, auch in "Code" -Markern, die entkommen? – yPhil

Verwandte Themen