要在 VIM中使用進階搜尋和替換功能,就要熟悉 VIM 中的Regex,VIM 正則和我們常用正則的文法大體相近,但是還是有個別不同的地方。
下面我們對 VIM Regex進行介紹並總指出其與 Perl 正則的不同之處。
字元集
. 匹配任意一個字元 \w 匹配單詞字母,等同於[0-9A-Za-z_]。 \W 匹配單詞字母之外的任一字元,等同於[^0-9A-Za-z_]。 \t 匹配字元。 \a 所有的字母字元. 等同於[a-zA-Z] \e \t \r \b \d 數字 [0-9] \D 非數字 [^0-9] \x 十六進位數 [0-9a-fA-F] \X 非十六進位數 [^0-9a-fA-F] \s 空白字元 [ ] ( 和),等同於[ /t]\S 非空白字元 [^ ] (除 和 之外),等同於[^ /t]\l 小寫字母 [a-z] \L 非小寫字母 [^a-z] \u 大寫字母 [A-Z] \U 非大寫字母 [^A-Z] \i 標識符字元 'isident'\I 同於\i,但排除了數字 \k 關鍵字字元 \K 同\k,但排除數字 \p 可列印字元 \P 同\p,但排除數字 \f 檔案名稱字元 \F 同\f,但排除數字 \_ 表示段行,他與以上的字元組合,如 \_s,\_a 。。。
範圍
[abc] 匹配方括弧中的任意一個字元。可以使用-表示字元範圍, [a-z0-9] 匹配小寫字母和阿拉伯數字。 [^abc] 在方括弧內開頭使用^符號,表示匹配除方括弧中字元之外的任一字元。
多選一
模式中的"或"操作符是"\|"。如:/foo\|bar
分組
\(\)
在替換的時候可以使用 \1、\2 。。。來引用 \(\) 捕獲的內容
perl : ()
量次(重複次數)
* 匹配0-任意個 *\{-\} * 的惰性模式 perl : *?\+ 匹配1 至任意個 perl : +\+\{-\} \+ 的惰性模式 perl : +?\? 匹配0-1個 perl : ?\{n,m\} 匹配n-m個 perl : {n,m}\{-n,m\} \{n,m\} 的惰性模式 perl : {n,m}?\{n\} 匹配n個 perl : {n}\{-n\} \{n\} 的惰性模式 perl : {n}?\{n,\} 匹配n 至任意個 perl : {n,}\{-n,\} \{n,\} 的惰性模式 perl : {n,}?\{,m\} 匹配0- m 個 perl : {0,m}
元字元 說明 \* 匹配 * 字元 \. 匹配 . 字元 \/ 匹配 / 字元 \\ 匹配 \ 字元 \[ 匹配 [ 字元
位置
$ 匹配行尾 ^ 匹配行首 \< 匹配單詞詞首 perl : \b\> 匹配單詞詞尾
函數式
:s/替換字串//=函數式
在函數式中可以使用 submatch(1)、submatch(2) 等來引用 /1、/2 等的內容,而submatch(0)可以引用匹配的整個內容。
This entry was written by zpz, posted on 2012
年 6 月 30 日 at 下午 5:01, filed under linux, vim and
tagged Vim, vim regexp, Vim教程, Vim替換,vim正則, Regex.
Bookmark the permalink. Follow any comments here with the RSS
feed for this post. Post a comment or leave a trackback: Trackback
URL.