2017-09-18 1 views
0

나는 정력 플러그인을 작성하고 언어로 작업 할 수 있도록 할 번호와 일치하는 데 필요한 방법을 배우려고 노력하고 다른 색상으로 강조 표시하려고 매우 마법 모드에서 정규 표현식을 다음 썼다 :Perl에서 작동하는 동안 vim의 과학 ​​숫자 및 16 진수 및 10 진수 정규 표현식 오류가 발생합니까?

syntax match cNumberGroup "\v\d+" 
syntax match cNumberGroup "\v0x\x+" 
syntax match cNumberGroup "\v[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?" 

첫 번째는 십진수입니다. 두 번째는 16 진수 숫자 세 번째 숫자는 과학 숫자 표현입니다.

처음 두 개는 정상적으로 작동하지만 마지막 하나는 작동하지 않습니다. 왜 그것이 작동하지 않는지, 그리고 그 모든 3 가지 시스템을 효율적으로 다루기 위해 모든 정규 표현식을 작성하는 더 좋은 방법이 있는지 알고 싶습니다.

감사합니다.

+0

나는 오류가 발생 : 'E64를? '아무것도 따르지 않는다.' – Carpetsmoker

+3

아마도 당신이'(? : ...)'을 사용하고 있기 때문일 것입니다. 이것은 Vim에서 지원되지 않습니다. Vim Regexps는 Perl과 호환되지 않습니다. 차이점에 대한 개요는': help perl-patterns'을보십시오. – Carpetsmoker

답변

3

정규 표현식에서 \v (매우 매직)을 두드려도 Vim의 정규 표현식 구문은 Perl과 호환되지 않습니다. @Carpetsmoker가 이미 언급했듯이 :help perl-patterns은 차이점을 보여줍니다. 귀하의 예를 들어

(?:...)\v%(...)로 쓸 수있다 :

syntax match cNumberGroup "\v[+\-]?%(0|[1-9]\d*)%(\.\d*)?%([eE][+\-]?\d+)?" 
관련 문제