一、VIM,GVIM中正則匹配的用處
VIM的一個強大之處就在於其文字搜尋、匹配的能力,可用於替換、刪除、查詢等,極大提升使用者的文字編輯效率,寫程式碼必備技能。
二、常用的匹配字元
大體上可以分為四類,字元的匹配、數量的匹配(也可理解為匹配次數)、位置的匹配(開頭、結尾等),和特殊字元的匹配。
2.1 字元的匹配
常用的字元匹配如下表:
字元 | 含義 |
---|---|
. | 匹配任意字元 |
[xxx] | 匹配方括號中的任意字元 |
[^xxx] | 匹配除了方括號內字元以外的任意字元 |
\d | 匹配任意數字,相當於[0-9] |
\D | 匹配除了數字以外的任意字元,相當於[^0-9] |
\l | 匹配字母a-z |
\L | 匹配字母a-z以外的其他字元 |
\u | 匹配字母A-Z |
\U | 匹配字母A-Z以外的其他字元 |
\x | 匹配十六進位制數,相當於[0-9a-fA-F] |
\X | 匹配十六進位制數以外的字元,相當於[^0-9a-fA-F] |
\w | 匹配任意word,簡單來說就是任意數字、字母組成的一個無空白字元的字串,兩個字串中間有空白字元的會被認為是兩個word |
\s | 匹配空白字元,會將空格和tab都匹配到 |
\S | 匹配空白字元以外的字元 |
\t | 匹配tab字元 |
2.2 數量的匹配(匹配次數)
一般格式是“字元匹配pattern次數匹配pattern”,表示將符合字元匹配pattern的字元匹配次數pattern次。注意使用時下表中除 * 外其他的前邊的反斜槓不要丟掉。
字元 | 含義 |
---|---|
* | 匹配任意多次 |
\? | 匹配0-1次 |
\+ | 匹配1-任意多次 |
\'{n,m}' | 匹配n-m次 |
\'{n}' | 匹配n次 |
\'{n,}' | 匹配n到任意次 |
\'{,n}' | 匹配0-n次 |
注:實際使用時花括號兩側的單引號不用打,這裡是markdown的問題,不打單引號啥都顯示不出來。 |
2.3 匹配位置
指明匹配的位置,一般就行首行位詞頭詞尾,要注意位置匹配時看清楚有沒有空格,比如不要匹配行首時預設忽略了開頭的空白字元從而導致匹配失敗。
字元 | 含義 |
---|---|
^ | 匹配行首 |
$ | 匹配行尾 |
\< | 匹配詞首 |
\> | 匹配詞尾 |
2.4特殊字元
有一些字元因為本身具有特殊含義,上邊基本也都提到了,所以在匹配這些字元時要加反斜槓。
字元 | 含義 |
---|---|
\. | 匹配字元“.” |
\* | 匹配字元“*” |
\$ | 匹配字元“$” |
\ [ | 匹配字元“[”,字元“]”同理,但是若直接匹配“[”和"]"也可以匹配到,加反斜槓一般用於和2.1中匹配方括號內任意字元的情況區分開 |
\{ | 同上 |
\ / | 匹配字元“/”, 字元“\”同理 |
三、小練習
這裡我們用vim的底行搜尋舉幾個例子。
1.匹配開頭是“aaa”的
2.只匹配“aaa”
3.匹配一個字母加一個數字
4.匹配擁有四個"ha"的單詞(圓括號字元分組)
這裡用到了圓括號字元分組的方法,將ha看做一個整體,匹配滿足次數的單詞。
上圖的匹配模式為:將ha看做整體,匹配四次
比如我不知道我想找的單詞裡有多少次ha,呢麼也可以按照下面的辦法來。
上圖的正則匹配式的含義是:匹配以ha開頭,ha匹配任意多次,詞尾也是ha的。
小結
vim中正則匹配的用處很多,如搜尋、替換、刪除、文字提取(見上篇文章:https://blog.csdn.net/weixin_43655109/article/details/133213974)等等,用好的話可以大大提高工作效率。