このテキストでは、vim 7.2 を使用します。
foo fooトークンfoo fooカウンタートークン foo fooトークンfooターゲットfoo fooカウンタートークンfoo
「トークン」で始まり、「カウンタートークン」を含まない「ターゲット」で終わる各文字列を一致させたいと考えています。
したがって、上記の例では、次のように一致させたいと考えています。
foo foo トークン foo foo カウンタートークン foo fooトークン foo ターゲットfoo foo カウンタートークン foo
しかし、これではありません:
foo foo
トークン foo foo カウンタートークン foo fooトークン foo ターゲットfoo foo カウンタートークン foo
(この理由は、実際には、長いファイルを検索していて、「ターゲット」の前の最後の「トークン」に関心があるためです。トークンは XML タグに少し似ていますが、XML ではないため、XMLツールは役に立ちません.カーソルが「ターゲット」に着地し、「トークン」を逆方向に検索できるように使用できることは知って\zs
いますが、確かにワンステップの解決策があります!)
私はこのようなものがうまくいくことを望んでいましたが、うまくいきません:
/token\(.*countertoken.*\)\@!*target
私が興味を持っているそのような出現はたくさんあります。もちろん、私が検索しているファイルは、「foo」ほど規則的なものでいっぱいではありません。
vimでこれのための1行の正規表現はありますか?