Belirli rakam sayısını içeren vim arama numaraları


23

Büyük bir belgede belirli uzunluk numaralarını bulmam gerekiyor. Bunun için regex kullanmaya çalıştım. Örneğin, tam olarak 2 basamaklı sayıları aramam gerekirse, kullanırım \d\d(örneğin / d'yi iki kez boşluk bırakarak). Bu iyi çalışıyor.

Ancak 10 basamaklı sayıları bulmak için \d10 kez yazmanız gerçekten mümkün değildir .

Güvenilir \d{2}, 'diyor E486: bulunamadı Desen: \ d {2} '

Bunu başarmanın daha hızlı / kolay yolu var mı?

Yanıtlar:


32

Farklı düzenli ifade lehçeleri var; bazıları (örn. Perl'ler), niceleme değiştirici ( \d{2}) ' de ters eğik çizgi gerektirmez , bazıları (örneğin sed) iki ( \d\{2\}) gerektirir ve Vim'de sadece açılış kıvrımının buna ihtiyacı vardır ( \d\{2}). Uyumsuz normal ifade lehçelerinin hüzünlü hali budur.

Ayrıca , tam sayıları eşleştirmek için eşleşmeyi tutturmanız gerektiğine, böylelikle içindeki \d\{2}rakamlarla ( 12) eşleşmeyeceğini de unutmayın 123. Bu, negatif geriye dönük ve ileriye dönük olarak yapılabilir :

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

Mükemmel. Regex hakkında bir liner bilgi lütfen misiniz? Gerçekten yardımcı olurdu. Thanks
mtk

1
Temel regexp sözdizimi ile mücadele eden biri için geriye / ileriye bakmak oldukça ileri düzeydedir. Muhtemelen daha iyi yerleşik daha tarif edemez :help /\@<!ve :help /\@!. Derhal her şeyi anlamıyorsanız endişelenmeyin; Dediğim gibi, bu oldukça gelişmiş.
Ingo Karkat 12:13

Ayrıca \v, kaçmak zorunda kalmamak için regex'in başlangıcına koyabilirsiniz , daha fazla bilgi için {bakınız :help magic(hala farklılıklar olsa da, vim regex'in biraz daha perge regex gibi davranmasını sağlar).
evilsoup

Çok teşekkür ederim: \d\{4}
installero

9

Takip etmeyi dene:

\d\{2}

ve kullanmak gerekir \değil/

Bu konuda vim düzenli anlatımı hakkında daha fazla bilgi bulabilirsiniz sitesinde veya vimbirlikte :help regular.



1

O kadar güzel değil, ama bu benim için bir günlük dosyasında 5 basamak için çalıştı.

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

-1

Benim gibi birisinin bu sayfaya ulaşması, herhangi bir rakam uzunluğuyla eşleşen bir kalıp aramak için :

\d\+

(Zorunlu ekstra kaçışları bulmadan önce ayrılmam biraz zaman aldı.


+miktar belirleyici, 1 veya daha fazla oluşum anlamına gelir. Bu normal ifade, 1 veya daha fazla basamak oluşumu ile eşleşir.
gaganso
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.