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

时间:2013-08-12 14:13:09

标签: regex string search vim

以下是我的.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. )

我必须修复所有拼写错误,仅保留ts[j]并修复ts[i]ts[n]的拼写错误。

如何构建搜索模式,以便到达ts[something] something NOT equal j的所有位置?

3 个答案:

答案 0 :(得分:7)

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

/ts\[[^j]\]

答案 1 :(得分:4)

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

/ts\[\(j\)\@!.\{-}]

或非常神奇

/\vts\[(j)@!.{-}]

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

答案 2 :(得分:1)

以下内容对您有用:

/ts[[][^j]]

或转义[

/ts\[[^j]]