特定の桁数を含むvim検索番号


23

大きなドキュメントで特定の長さの数値を見つける必要があります。このために正規表現を使用しようとしました。たとえば、正確に2桁の数字を検索する必要がある場合は、使用します\d\d(つまり、/ dを2回押した後にスペースを続けます)。これはうまく機能します。

しかし、10桁の数字を見つけるには、\d10回入力するのは実際には不可能です。

試しました\d{2}、「E486:パターンが見つかりません:\ d {2}

これを達成するためのより速く/簡単な方法はありますか?

回答:


32

さまざまな正規表現の方言があります。一部(Perlなど)は数量化修飾子\d{2})にバックスラッシュを必要とせず、一部(例えばsed)は2つ(\d\{2\})を必要とし、Vimでは開始中だけに必要です(\d\{2})。それは、互換性のない正規表現の方言の悲しい状態です。

また、正確な数字に\d\{2}一致させるには、の数字(12)に一致しないように一致を固定する必要があることに注意してください123。これは、ネガティブな後読み先読みで実行できます。

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

パーフェクト。正規表現に関する1つのライナー情報をお願いできますか?本当に役立つでしょう。ありがとう
mtk

1
基本的な正規表現構文に苦労している人にとって、後読み/先読みはかなり高度です。私はおそらく、組み込みの:help /\@<!およびよりもそれを説明することはできません:help /\@!。すぐにすべてを理解しなくても心配しないでください。私が言ったように、これはかなり高度です。
インゴカルカット

\vをエスケープする必要がない場合は、正規表現の先頭に置くこともできます({詳細:help magicについては、vim正規表現がperl正規表現のように動作しますが、違いはあります)。
evilsoup

感謝はたくさんあります:\d\{4}Viにはそれがすべてでは些細な一つだ
installero



1

それほどきれいではありませんが、これはログファイルで5桁の数字でうまくいきました。

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

-1

私のような人がこのページにアクセスして、任意の桁数に一致するパターンを探すだけの場合:

\d\+

(+の前に強制的に余分な\をエスケープするのに時間がかかりました)


+量指定子は1回以上の出現を表します。この正規表現は、1回以上の数字の出現に一致します。
-gaganso
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.