コード例は上がperl、下がvimコマンド
zero-width positive look-ahead: "abcdabcabcde" の中で 後ろに"cd"が付く"ab"だけを"ZZ"に変更したい。 ("ZZcdabcZZcde")
s/ab(?=cd)/ZZ/g;
:s/ab\(cd\)\@=/ZZ/g
zero-width negative look-ahead: "abcdabcabcde" の中で後ろに"cd"が付かない"ab"だけを"ZZ"に変更したい。("abcdZZcabcde")
s/ab(?!cd)/ZZ/g;
:s/ab\(cd\)\@!/ZZ/g
zero-width positive look-behind: "abc123ab123" の中で "abc"に続く "123" を "999" に変更したい。 ("abc999ab123")
s/(?<=abc)123/999/g;
:s/\(abc\)\@<=123/999/g;
zero-width negative look-behind: "std::"が付いてない"cout" を "std::cout" に変更したい。
s/(?<!std::)cout/std::cout/g;
:s/\(std::\)\@<!cout/std::cout/g;
最後のだけやけに具体的なのはそれがやりたくて調べてたからです。
後、別に不便してるわけじゃないけど、vimの正規表現ってnon-capture grouping ってできないのかなぁ..



