Vimでは、abc
と一致する行を検索する方法はありますか?後でxyz
行に含まれていませんか?したがって、次の行が一致しますvim regexで否定的な先読みを行う方法はありますか?
The abc is the best
The first three letters are abc
をし、次は一致しません:
The abc is the best but xyz is cheaper
The first three letters are abc and the last are xyz
を、私は次のような構文について知っている:
/abc\(xyz\)\@!
だけabcxyz
を照合し、回避するにその間に何かがある場合はありません。たとえば、abc-xyz
です。多くのポジションが後でxyz
が一致していないラインであるので、
/abc.*\(xyz\)\@!
を使用すると、動作しません。
(私はgrep abc <infile | grep -v xyz
ような何かをするだろうが、私はVimの中で対話的に上記の操作を行いたいコマンドラインであることに注意する必要があります。)
これは、ABC 'と同等ですが(?!。* XYZ)' Perlのようなエンジンで。 – nhahtdh
これは、先読みシンプルがパターンの現在位置から別の本格的な検索を開始し、その結果を使用して先読みが正か否かに応じて続行するかどうかを判断するためです。 – nhahtdh
も ':help perl-patterns'を参照してください。 'pattern1'が先行していない' pattern2'に対しては、それは否定的なルックバックです。 '\(pattern1 \)\ @<!pattern2'を検索してください。 – hochl