如何在VIM中搜索不匹配的模式

Sau*_*tro 4 regex string vim search

这是我的.py文件的摘录:

for i in range(1,nxs-2):
    for j in (1, nts-2):
        dg_cc(dg,sina,cosa,s,r2tanb,omega,L,n,m,xs[i],ts[k],pd)
        dot( dg,F,c1,transa=T )
        dot( c1, dg, ansK1, N, N, alpha=2., beta=1. )
        # linear buckling part
        g = g_cc(m,n,L,xs[i],ts[j],pd)
        Bg = fBg(Bg,cosa,s,L,m,n,xs[i],ts[i],pd)
        dot( g, Bg, ansK1, T, N, alpha=2., beta=1. )
        #
        if pd:
            fdg0(dg0,sina,cosa,s,r2tanb,omega,L,xs[i],ts[j])
            dot( dg0, F, c2, transa=T )
            dot( c2, dg, ansK0, N, N, alpha=2., beta=1. )
for i in (1, nxs-2):
    for j in range(1,nts-2):
        dg_cc(dg,sina,cosa,s,r2tanb,omega,L,n,m,xs[i],ts[n],pd)
        dot( dg,F,c1,transa=T )
        dot( c1, dg, ansK1, N, N, alpha=2., beta=1. )
        # linear buckling part
        g = g_cc(m,n,L,xs[i],ts[j],pd)
        Bg = fBg(Bg,cosa,s,L,m,n,xs[i],ts[j],pd)
        dot( g, Bg, ansK1, T, N, alpha=2., beta=1. )
Run Code Online (Sandbox Code Playgroud)

我必须解决所有的错别字只保留ts[j]和修复那些ts[i]ts[n],例如.

如何构建我的搜索模式以便到处到处ts[something] something NOT equal j

Ken*_*ent 7

你可以尝试一下,看看它是否适合你的要求?

/ts\[[^j]\]
Run Code Online (Sandbox Code Playgroud)


FDi*_*off 6

如果您想要否定的模式超过一个字符,您可以使用否定前瞻。如果模式与当前位置不匹配,则匹配。

/ts\[\(j\)\@!.\{-}]
Run Code Online (Sandbox Code Playgroud)

或者非常神奇

/\vts\[(j)@!.{-}]
Run Code Online (Sandbox Code Playgroud)

@!在这种情况下,如果就在 之前,则模式被否定j。这.{-}是一个非贪婪匹配,用于匹配直到下一个方括号的所有内容。

  • @SaulloCastro 它更复杂,但更强大。其他答案只是否定一个否定单个字母的字符类。这样您就可以否定任何您想要的模式。 (2认同)