regex - 在 Vim 中突出显示缩进项目符号的正则表达式

标签 regex vim

我正在尝试在 Vim 语法文件中编写一些匹配规则以突出显示缩进项目符号。我的问题是语法突出显示使用背景颜色,因此我想仅匹配项目符号字符而不是前面的空格。

我怎么说“仅当前面有 ^\s\{0,1} 时才匹配\d.、+、- 和 *(但匹配空格)”

使用以下匹配规则,

syn match notesBullet /^\s*\*/
hi def link notesBullet String 
syn match notesNumber /^\s*\d*\./
hi def link notesNumber String
syn match notesMinus /^\s*\-/
hi def link notesMinus Todo 
syn match notesPlus /^\s*+/
hi def link notesPlus Plus

我得到以下结果:

有没有办法在 Vim 正则表达式中说“如果前面有,但不包括”?

最佳答案

除了 Alex 提到的环视之外,Vim 模式还具有“匹配开始”和“匹配结束”的概念,分别用 \zs\ze 表示> 分别。 Vim 仅当整个模式存在时才会匹配,但会排除 \zs 之前和\或 \ze 之后的所有内容(您不必同时指定两者)匹配。

因此,在您的情况下,您可以在空白模式之后和项目符号/数字模式之前添加 \zs 。例如:/^\s*\zs\d*\./

关于regex - 在 Vim 中突出显示缩进项目符号的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3481740/

相关文章:

python - 正则表达式匹配关键字后的多个数字

javascript - 从单词和逗号之间检索值,但包括分隔单词

regex - 级联-正则表达式解析器-错​​误的字段数

Vim 宏 : Incrementing numbers on non-consecutive lines

c++ - vim中的映射tab键

regex - 单引号中的双引号,反之亦然

不同长度字符串时的javascript正则表达式

javascript - 在 gulp 中对正则表达式捕获组进行计算

vim - 带@符号的文件名和标识符

Quickfix窗口中的Vim文件路径