regex - Vim 正则表达式跳过定界符

标签 regex vim vim-syntax-highlighting

我正在尝试创建一个 vim 语法文件,我想匹配以下文本:

@[one two three four]

基本上,我想将 onetwo 作为两个单独的匹配项进行匹配,我不关心 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/

相关文章:

python - ' ^' Character Matches Both ' <' and ' >' 在 Python 正则表达式中

regex - 使用 VI 编辑器时我的 REGEX 有什么问题?

html - 在某些字符上显示 Vim omnicomplete 而不是 Ctrl-X Ctrl-O?

php - 使用 Vim 在 PHP 脚本中突出显示真正的 SQL 语法

.net - 如何强制两个模式捕获到正则表达式中的同一组

regex - Data Studio Regex (Google RE2) 从路径中提取子目录

linux - 如何激活VIM中高亮显示的C语法?

javascript - 在 vim 中的 javascript 字符串中突出显示 HTML 语法

regex - 为什么 [\n$] 不起作用而 (\n|$) 起作用?

ubuntu - ubuntu中没有vim包怎么安装vi