пошукові номери vim, що містять конкретну кількість цифр


23

Мені потрібно знайти конкретні номери довжини у великому документі. Я спробував використовувати для цього регекс. Наприклад, якщо мені потрібно шукати номери з точно двома цифрами, я використовую \d\d(тобто / d двічі, а потім пробіл). Це добре працює.

Але для знаходження 10-значних чисел насправді неможливо набрати \d10 разів.

Спробував \d{2}: " E486: Шаблону не знайдено: \ d {2} "

Чи є швидший / простіший спосіб досягти цього?

Відповіді:


32

Існують різні діалекти регулярного вираження; деякі (наприклад, Perl's) не потребують зворотних косих змін у модифікаторі кількісного визначення ( \d{2}), деякі (наприклад, sed) потребують двох ( \d\{2\}), а у Vim, лише потрібне для відкриття фігурне ( \d\{2}). Ось сумний стан несумісних діалектів регулярних виразів.

Також зауважте, що для відповідності точних цифр, ви повинні прив’язувати відповідність так, щоб \d\{2}вони не відповідали цифрам ( 12) у 123. Це можна зробити за допомогою негативного огляду та випередження :

\d\@<!\d\{2}\d\@!

Ідеально. Чи можете ви сподобатись однією інформацією про вкладиші на регулярному виразі? Було б дуже корисно. Дякую
mtk

1
Для тих, хто бореться з основним синтаксисом регулярних виразів, огляд "позаду" / "вперед" є досить розвинутим. Я, мабуть, не можу описати це краще, ніж вбудований :help /\@<!та :help /\@!. Не хвилюйтеся, якщо ви не відразу все зрозумієте; як я вже говорив, це досить розвинуте.
Інго Каркат

Ви також можете поставити \vна початку регулярного виразу, якщо ви хочете уникнути необхідності бігти {, див. :help magicДля отримання додаткової інформації (він змушує vim regex поводитись трохи більше, як регекс perl, хоча все ще існують відмінності).
злий

Дякую багато: \d\{4}у Vi це взагалі тривіально
installero

9

Спробуйте наступне:

\d\{2}

і ви повинні використовувати \НЕ/

Ви можете дізнатися більше про регулярні виїзди vim на цей сайт або в vimс :help regular.



1

Не настільки красиво, але це працювало для мене на 5 цифр у файлі журналу.

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

-1

Щоб хтось, як я, перейшов на цю сторінку просто, щоб шукати шаблон, що відповідає будь-якій довжині цифр:

\d\+

(У мене знадобився певний час, щоб визначити обов'язкові додаткові втечі \ до +)


+кількісний показник означає 1 або більше випадків. Цей регулярний вираз відповідає 1 або більше зустрічань цифр.
gaganso
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.