用于科学数字的正则表达式以及用于vim的十六进制和十进制数字在用于Perl时产生错误?

用于科学数字的正则表达式以及用于vim的十六进制和十进制数字在用于Perl时产生错误?,vim,centos7,Vim,Centos7,我试图学习如何编写vim插件,并要求匹配语言允许使用的数字,并尝试用不同的颜色突出显示它,并以非常神奇的模式编写了以下正则表达式: syntax match cNumberGroup "\v\d+" syntax match cNumberGroup "\v0x\x+" syntax match cNumberGroup "\v[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?" 第一个是十进制数。第二个是十六进制数 第三个是科学数字表示

我试图学习如何编写vim插件,并要求匹配语言允许使用的数字,并尝试用不同的颜色突出显示它,并以非常神奇的模式编写了以下正则表达式:

 syntax match cNumberGroup "\v\d+" 
 syntax match cNumberGroup "\v0x\x+"
 syntax match cNumberGroup "\v[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?"
第一个是十进制数。第二个是十六进制数 第三个是科学数字表示

前两个工作正常,但最后一个不工作。我想知道为什么它不起作用,还有,有没有更好的方法来编写所有正则表达式以有效地覆盖所有三个数字系统


谢谢。

只是从正则表达式中插入
\v
(非常神奇)并不能使Vim的正则表达式语法与Perl兼容。正如@ruttersmoker已经评论的那样,
:help perl模式
显示了差异

例如,
(?:…)
必须写成
\v%(…)


仅仅从正则表达式中插入
\v
(非常神奇)并不能使Vim的正则表达式语法与Perl兼容。正如@ruttersmoker已经评论的那样,
:help perl模式
显示了差异

例如,
(?:…)
必须写成
\v%(…)


我得到一个错误:
E64:?不遵循任何内容。可能是因为您使用的是Vim不支持的
(?:…)
。Vim regexp与Perl不兼容。有关差异的概述,请参见
:help perl patterns
。我发现一个错误:
E64:?不遵循任何内容。可能是因为您使用的是Vim不支持的
(?:…)
。Vim regexp与Perl不兼容。有关差异的概述,请参见
:help perl patterns
syntax match cNumberGroup "\v[+\-]?%(0|[1-9]\d*)%(\.\d*)?%([eE][+\-]?\d+)?"