2014-04-18 18 views
9

Ich benutze den Kate-Editor. Hier ist ein minimales Beispiel, das mein Problem zeigt:Wie Kate regulären Ausdruck ersetzen

Ich habe eine Datei mit einem Bündel von Vorkommen:

\command{stuff} 

wo Sachen einige beliebige Zeichenfolge aus Buchstaben ist. Ich möchte dies durch

\disobey{stuff} 

ersetzen, wo Zeug unverändert ist. Der reguläre Ausdruck:

\\command\{[a-zA-Z]*\} 

entspricht solchen Ausdrücken. So ziehe ich den Ersetzen-Dialog mit STRG + R und geben Sie

Find: \\command\{[a-zA-Z]*\} 
Replace: \\disobey\{\1\} 

So in dem Dokument, eine tatsächliche Instanz sagen,

\command{exchange} 

und wenn ich drücken Sie die Schaltfläche Ersetzen geändert, um

\disobey{1} 

In der Kate-Dokumentation: Anhang B: Reguläre Ausdrücke sollte \ 1 mit dem ersten verwendeten Muster übereinstimmen. Ist das in der Tat die richtige Syntax? Ich habe auch $ 1, # 1 und verschiedene andere Dinge ausprobiert.

+0

In genau die gleichen Dokumentation heißt es, dass '\ 1 'matches "die ersten ** ** Unter Mustern ** in Klammern **" –

Antwort

9

Wickeln Sie den Wert mit () es als Gruppe zu erfassen, so können Sie es in Ihrem

So Ihre Entdeckung regex wie dies ändern ersetzen verwenden:

\\command\{([a-zA-Z]*)\} 

und Sie sollten in Ordnung tun. Hier

+1

Ja. Das funktioniert! In 7 Minuten annehmen. –

+0

+1; du hast es 22 Sekunden vor mir: P –

+0

@ JonathanGallagher, froh, geholfen zu haben;) –

11

ist ein Zitat direkt aus der Dokumentation:

Der String \1 Referenzen das erste Untermuster in Klammern

So müssen Sie [a-zA-Z]* in einer Erfassungsgruppe setzen, wie ([a-zA-Z]*).

Find: \\command\{([a-zA-Z]*)\} 
Replace: \\disobey\{\1\} 
+0

Um ehrlich zu sein, ist dieses bisschen Dokumentation verwirrend. In Anhang B, auf den Sie verweisen, diskutieren sie zunächst Muster. Dann diskutieren sie Untermuster. Das Sub soll sich auf "Substitution" beziehen. Ich dachte ehrlich, es bedeute Submuster wie in ab

Verwandte Themen