특정 숫자를 포함하는 vim 검색 번호


23

큰 문서에서 특정 길이의 숫자를 찾아야합니다. 나는 이것을 위해 정규 표현식을 사용하려고했습니다. 예를 들어, 정확히 2 자리 숫자를 검색해야하는 경우 \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. 이것은 부정적인 look-behindlook-ahead 로 수행 할 수 있습니다 .

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

완전한. 정규식에 대한 라이너 정보를 하나 주시겠습니까? 정말 도움이 될 것입니다. 감사합니다
mtk

1
기본 정규 표현식 구문으로 어려움을 겪고있는 사람에게는 룩 어루 / 미리보기가 상당히 고급입니다. 아마도 내장 :help /\@<!및 보다 더 잘 설명 할 수는 없습니다 :help /\@!. 모든 것을 즉시 이해하지 못한다고 걱정하지 마십시오. 내가 말했듯이, 이것은 꽤 고급입니다.
Ingo Karkat

또한 넣을 수 있습니다 \v당신이 탈출하는 것을 방지하기 위해 원하는 경우 정규 표현식의 시작 부분에 {참조 :help magic자세한 내용은 (여전히 차이가 있지만 정력 정규식없이 행동 a가 더 펄 정규식처럼 비트 수).
evilsoup

감사합니다. \d\{4}Vi에서는 전혀 사소한 것입니다
installero

9

다음을 시도하십시오 :

\d\{2}

그리고 당신은 사용 \하지 않아야/

이에 정력의 정규 exression에 대해 자세히 알 수있는 사이트 또는 vim과를 :help regular.



1

예쁘지는 않지만 로그 파일에서 5 자리 숫자로 작동했습니다.

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

-1

자신과 같은 사람은이 페이지에 도달하기 위해 단순히 일치하는 패턴을 찾기 위해 어떤 숫자의 길이 :

\d\+

(필요한 추가 이스케이프 \ before +를 알아내는 데 약간의 시간이 걸렸습니다)


+수량자는 하나 이상의 발생을 나타냅니다. 이 정규식은 하나 이상의 숫자 발생과 일치합니다.
gaganso
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.