vim numery wyszukiwania zawierające określoną liczbę cyfr

23

Muszę znaleźć określone numery długości w dużym dokumencie. Próbowałem do tego użyć wyrażenia regularnego. Na przykład, jeśli muszę szukać liczb z dokładnie 2 cyframi, używam \d\d(tj. / D dwa razy, a następnie spację). To działa dobrze.

Jednak w przypadku znalezienia 10 cyfr nie jest możliwe wpisanie \d10 razy.

Próbowałem \d{2}, mówi „ E486: Nie znaleziono wzoru: \ d {2}

Czy jest jakiś szybszy / łatwiejszy sposób na osiągnięcie tego?

Mt.
źródło

Odpowiedzi:

32

Istnieją różne dialekty wyrażeń regularnych; niektóre (np. Perla) nie wymagają ukośników odwrotnych w modyfikatorze kwantyfikacji ( \d{2}), niektóre (np. sed) wymagają dwóch ( \d\{2\}), aw Vimie potrzebuje tylko nawias otwierający ( \d\{2}). To smutny stan niezgodnych dialektów wyrażeń regularnych.

Pamiętaj również, że aby dopasować dokładne liczby, musisz zakotwiczyć dopasowanie, aby \d\{2}nie pasowało do cyfr ( 12) w 123. Można to zrobić za pomocą negatywnego spojrzenia w przeszłość i przewidywania :

\d\@<!\d\{2}\d\@!
Ingo Karkat
źródło
Doskonały. Czy możesz podać jedną informację liniową w wyrażeniu regularnym? Byłoby naprawdę pomocne. Dzięki
Mt
1
Dla kogoś, kto zmaga się z podstawową składnią wyrażeń regularnych, spoglądanie w przód / w przód jest dość zaawansowane. Prawdopodobnie nie potrafię tego lepiej opisać niż wbudowane :help /\@<!i :help /\@!. Nie martw się, jeśli nie od razu wszystko zrozumiesz; jak powiedziałem, jest to dość zaawansowane.
Ingo Karkat,
Możesz także umieścić \vna początku wyrażenia regularnego, jeśli chcesz uniknąć ucieczki {, zobacz :help magicwięcej informacji (sprawia, że ​​wyrażenie regularne vim zachowuje się trochę bardziej jak wyrażenie regularne w Perlu, choć nadal istnieją różnice).
evilsoup
Bardzo dziękuję: \d\{4}w Vi to w ogóle
installero
9

Spróbuj wykonać następujące czynności:

\d\{2}

i należy użyć \nie/

Możesz dowiedzieć się więcej o regularnym exression vim na tej stronie lub w vimz :help regular.

Raphael Ahrens
źródło
2

Dzielenie nawiasów działa: \d\{2\}

one_half_3544
źródło
1

Nie tak ładnie, ale działało to dla mnie na 5 cyfr w pliku dziennika.

/\<\%(\d\d\d\d\d\)\>
theINtoy
źródło
-1

Aby ktoś taki jak ja wszedł na tę stronę, po prostu szukał wzoru pasującego do dowolnej długości cyfr:

\d\+

(Zajęło mi trochę czasu ustalenie obowiązkowej dodatkowej ucieczki \ przed +)

Kevin Liu
źródło
+kwantyfikator oznacza 1 lub więcej wystąpień. To wyrażenie regularne pasuje do 1 lub więcej wystąpień cyfr.
gaganso,