VIM-Suchnummern mit einer bestimmten Anzahl von Ziffern

23

Ich muss bestimmte Längen in einem großen Dokument finden. Ich habe versucht, Regex dafür zu verwenden. Wenn ich zum Beispiel nach Zahlen mit genau zwei Ziffern suchen muss, verwende ich \d\d(dh / d zweimal, gefolgt von einem Leerzeichen). Das funktioniert gut.

Aber um 10-stellige Zahlen zu finden, ist es nicht wirklich möglich, \d10-mal einzugeben.

Versucht \d{2}, sagt ' E486: Muster nicht gefunden: \ d {2} '

Gibt es einen schnelleren / einfacheren Weg, dies zu erreichen?

mtk
quelle

Antworten:

32

Es gibt verschiedene Dialekte für reguläre Ausdrücke. Einige (z. B. Perls) erfordern keine Backslashes im Quantifizierungsmodifikator ( \d{2}), einige (z. B. sed) erfordern zwei ( \d\{2\}), und in Vim benötigt es nur das öffnende Curly ( \d\{2}). Das ist der traurige Zustand inkompatibler Dialekte mit regulären Ausdrücken.

Beachten Sie außerdem, dass Sie die Übereinstimmung verankern müssen, damit sie nicht mit Ziffern ( ) in übereinstimmt, um exakte Zahlen zu finden . Dies kann mit negativem Look-Behind und Look-Ahead erfolgen :\d\{2}12123

\d\@<!\d\{2}\d\@!
Ingo Karkat
quelle
Perfekt. Kannst du bitte einen Liner über den Regex informieren? Wäre echt hilfreich. Vielen Dank
MTK
1
Für jemanden, der mit der grundlegenden Regexp-Syntax zu kämpfen hat, ist Look-Behind / Ahead ziemlich fortgeschritten. Ich kann es wahrscheinlich nicht besser beschreiben als das eingebaute :help /\@<!und :help /\@!. Mach dir keine Sorgen, wenn du nicht sofort alles verstehst. wie gesagt, das ist ziemlich weit fortgeschritten.
Ingo Karkat
Sie können auch \vam Anfang des regulären Ausdrucks setzen, wenn Sie vermeiden möchten, dass der reguläre Ausdruck entkommen {muss. :help magicWeitere Informationen finden Sie unter.
Evilsoup
Vielen Dank: \d\{4}In Vi ist es überhaupt eine Kleinigkeit
Installero
9

Versuche Folgendes:

\d\{2}

und du solltest \nicht verwenden/

Mehr über die regelmäßige Verbreitung von vim erfahren Sie auf dieser Site oder vimbei :help regular.

Raphael Ahrens
quelle
2

Escape-Klammern funktioniert: \d\{2\}

one_half_3544
quelle
1

Nicht so hübsch, aber das hat bei mir für 5 Ziffern in einer Logdatei geklappt.

/\<\%(\d\d\d\d\d\)\>
theINtoy
quelle
-1

Für jemanden wie mich, der diese Seite erreicht, ist es einfach, nach einem Muster zu suchen, das mit einer beliebigen Länge von Ziffern übereinstimmt :

\d\+

(Es hat einige Zeit gedauert, bis ich die obligatorische zusätzliche Flucht herausgefunden habe. \ Vorher +)

Kevin Liu
quelle
+quantifier steht für 1 oder mehr Vorkommen. Dieser reguläre Ausdruck entspricht mindestens einem Vorkommen von Ziffern.
Gaganso