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?

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

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.



1

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

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

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


+kwantyfikator oznacza 1 lub więcej wystąpień. To wyrażenie regularne pasuje do 1 lub więcej wystąpień cyfr.
gaganso,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.