天天看點

vim正規表達式環視使用

vim正規表達式環視使用

環視,或者說正向預查,反向預查

vim規定正規表達式的元字元必須用反斜杠進行轉義才行

perl将模式寫在環視的括号内,而vim将模式寫在環視的元字元之前

# Perl的寫法/(?<=foo)bar/

# vim的寫法/\(foo\)\@<=bar

vim Perl  意義

\@=  (?=   順序環視

\@!  (?!   順序否定環視

\@<= (?<=  逆序環視

\@<! (?<!  逆序否定環視

\%(atom\) (?: 非捕獲型括号(此分組不捕獲,可以了解為不算在分組資訊中)

以下為在vim底行模式示例

查找small,要求後面是cat字元串     /small\(cat\)\@=

查找small,要求後面不能是cat字元串 /small\(cat\)\@!

查找cat,要求前面是small字元串     /\(small\)\@<=cat

查找cat,要求前面不能是small字元串 /\(small\)\@<!cat

如将單詞後面的空格替換為_指令如下 :%s/\(\w\)\@<= /_/gc

查找單詞後面的空格和下一個字元 /\(\w\)\@<= \w

%(atom) 非捕獲型括号 意思是,此分組不捕獲,不會将此括号内的表達式記錄 :%s/\%\(cat\)_\(lili\)/1/gc