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?

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\@!

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.



1

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

/\<\%(\d\d\d\d\d\)\>

-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 +)


+quantifier steht für 1 oder mehr Vorkommen. Dieser reguläre Ausdruck entspricht mindestens einem Vorkommen von Ziffern.
Gaganso
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.