Neovim v0.5.0正则表达式中可否在字符区间内使用\d替代[0-9]
问题结论
Neovim(含v0.5.0版本)默认的Vim正则方言中,不能在方括号字符集中直接使用\d表示数字,\d仅在字符集外生效,放入[]中会被解析为普通字符d。
原因说明
Vim系正则的转义规则和PCRE等通用正则不同:\d、\w这类反斜杠开头的简写匹配规则,仅在方括号字符集外被识别;字符集内部仅支持POSIX标准的字符类写法,反斜杠转义不会被特殊处理。
替代方案
如果你需要在字符集中匹配数字,有两种稳妥的写法:
- 直接用
[0-9],兼容性最好,所有正则环境下都能生效,也无需记忆Vim专属语法 - 用Vim/POSIX兼容的字符类写法
[[:digit:]],等价于[0-9],适合需要和其他POSIX字符类组合的场景
比如需要匹配数字加小写字母,就可以写[0-9a-z]或者[[:digit:][:lower:]],二者效果一致。
内容的提问来源于stack exchange,提问作者ElectrifyPro
相关产品推荐
相关产品推荐

