我正在尝试创建一个 vim 语法文件,我想匹配以下文本:
@[one two three four]
基本上,我想将 one
和 two
作为两个单独的匹配项进行匹配,我不关心 three
和 四
(或它们之后的任何内容)。我也不想在表达式的开头包含 @[
分隔符。
我尝试对区域执行此操作,如下所示:
syn region langParamOne matchgroup=langListStart start=/@\[/ end=/\s\|\]/
syn region langParamTwo matchgroup=langListStart start=/@\[\S\+\s\+/ end=/\s\|\]/
不幸的是,这不仅看起来很乱,而且 vim 只会匹配其中一个区域,因为一个区域包含另一个区域。
如何为这种语法设置匹配,但不包括匹配中的起始 @[
?
最佳答案
这个怎么样:
syn region langParam matchgroup=langListStart start=/@\[/ end=/\]/ contains=langParamOne,langParamTwo
syn match langParamOne /\(@\[\)\@<=\S\+/ contained
syn match langParamTwo /\(@\[\S\+\s\)\@<=\S\+/ contained
关于regex - Vim 正则表达式跳过定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14065952/