Wie kann ich eine nicht gierige Regex-Abfrage in Notepad ++ machen?

7

Ich schreibe ein Papier mit Latex und habe versehentlich \cite[] anstelle von \cite{} geschrieben. Ich könnte einfach das ganze Dokument von Hand durchgehen, aber ich möchte wissen, wie man das in notepad ++ mit Regexes macht.

Ich probierte anfangs \cite\[(.*)\] und ersetzte mit \cite{} , was für einfache Fälle wie

funktioniert %Vor%

Wenn es jedoch zwei oder mehr Zitate in einem Absatz gibt, stimmt es mit allen überein. So zum Beispiel

%Vor%

entspricht der gesamten Zeile

Wie kann ich eine nicht gierige Übereinstimmung erhalten, so dass die obige Zeile als 3 separate Übereinstimmungen übereinstimmen würde und das Ergebnis eines Ersetzungsbefehls sollte mir

geben %Vor%     
twerdster 24.08.2013, 06:53
quelle

2 Antworten

19

Verwenden Sie einen widerwilligen (aka nicht-gierigen) Ausdruck:

%Vor%

Die Zugabe der Fragezeichen ändert sich die .* von gierigen (Standard) zu widerstrebend (nicht gierig), was bedeutet, es so wenig wie möglich verbrauchen eine Übereinstimmung zu finden, was bedeutet, es wird nicht überspringen mehrere Suchbegriffe, so dass sie paßt die offene eckige Klammer zu verwenden, wenn die ersten zitieren und die eckige Klammer der letzten zitieren.

Sehen Sie eine Live-Demo dieses Regex mit der Probe in der Frage zu arbeiten.

    
Bohemian 24.08.2013, 06:54
quelle
1

Besser, einen präziseren Ausdruck zu verwenden:

\cite\[([^[\]]*)\]

Sie müssen Notepad ++ Version 6 oder höher verwenden (sie haben ein Upgrade auf die PCRE-Regex-Engine auf V6 durchgeführt).

    
ridgerunner 24.08.2013 15:44
quelle

Tags und Links