Regex Vim:匹配大括号之间的空格,但不匹配新行上的空格

Regex Vim:匹配大括号之间的空格,但不匹配新行上的空格,regex,vim,Regex,Vim,在vim中,我试图在.coffee文件中突出显示后面的空格(和前面的空格) 因此,在(foo=true,bar=false)中,该方法将突出显示foo之前和false之后的空格 以下是我所拥有的: highlight BraceWhiteSpace ctermbg=red ctermfg=white guibg=#592929 fun! UpdateMatch() if &ft !~ '

在vim中,我试图在
.coffee
文件中突出显示
后面的空格(
前面的空格)

因此,在
(foo=true,bar=false)
中,该方法将突出显示
foo
之前和
false
之后的空格

以下是我所拥有的:

highlight BraceWhiteSpace ctermbg=red ctermfg=white guibg=#592929
fun! UpdateMatch()                                               
    if &ft !~ '^.*\.coffee$'                                     
        match BraceWhiteSpace /([ \t]\+\|[ \t]\+)/               
    else                                                         
        match NONE                                               
    endif                                                        
endfun                                                           
autocmd BufEnter,BufWinEnter * call UpdateMatch()                
关键部分在这里

match BraceWhiteSpace /([ \t]\+\|[ \t]\+)/
这是可行的,除了它还匹配了一个大括号和一个新行上的前导空格,我不希望这样:

    )
我正在努力编写一个正则表达式,它有一个回溯功能来检查它是否在行的开头

有人能帮忙吗?

试试这句话:

match BraceWhiteSpace /([ \t]\+\|.\+\zs[ \t]\+)/

您可以使用此解决方案,并在
后面放置查找:


检查它是否不是行首的lookback应该是
^@(或者如果它不在模式的开头,请使用
\\\\^@),这样我的完整模式将是
/([\t]\+\|^\@?这对我不起作用,它将行中第一个空格后的所有内容与大括号前的空格匹配。然后,您可以将其延长一点:
[\t]\+)\(^[\t]\+)\@@WiktorStribiż如果起作用,您应该将其作为答案发布,并附上一些解释。
[ \t]\+)\(^[ \t]\+)\)\@<!
([ \t]\+\|[ \t]\+)\(^[ \t]\+)\)\@<!