查詢細節
回憶上節課內容
我們學習了替換 substitude
替換單行:s/shiyanlou/oeasy
加上range:3,5s/shiyanlou/oeasy:%s/shiyanlou/oeasy
加上flag:3,5s/shiyanlou/oeasy/g 多個替換:3,5s/shiyanlou/oeasy/gc 多個替換且逐個確認
替換還是很方便的
但是我想替換中使用正則表示式
可以麼?
先回憶一下正則表示式模式匹配
模式 - 列舉字元
[abcd] 表示匹配方括號中列舉的任意一個 字元abcd 中的任意一個字元
[a-z]可用 中劃線-` 表示字元範圍來減少列舉的[a-d] 等價於 [abcd]
[^abcd]表示匹配除方括號中字元以外的任意字元除了 abcd 之外的任意字元模式 - 常用符號
。等價於 [^\n]除了換行符 ( \n ) 以外,表示匹配任意一個字元
\l 等價於 [a-z]表示匹配 任意一個小寫字母意思是lowercase
\L 等價於 [^a-z]表示匹配 任意一個除小寫字母外的其他字元
\u 等價於 [A-Z]表示匹配 任意一個大寫字母意思是uppercase
\U等價於 [^A-Z]表示匹配 任意一個除大寫字母外的其他字元
\w等價於 [0-9A-Za-z_]表示匹配 任意一個字母、數字、下劃線
\W等價於 [^0-9A-Za-z_]表示匹配 任意一個字元除了字母、數字、下劃線。
\d等價於 [0-9]表示匹配 任意一個數字
\D 等價於 [^0-9]表示匹配 任意一個除數字外的其他字元
\x等價於 [0-9A-Fa-f]表示匹配 任意一個十六進位制數字
\X等價於 [^0-9A-Fa-f]表示匹配 任意一個除十六進位制數字外的其他字元
\s 包括兩種分隔符空格 和 tab
幫助手冊
起止標記
然後我們明確一下起止標記^ 表示匹配 輸入字串的開始位置 (行首)。$ 表示匹配 輸入字串的結束位置 (行尾)。
- \< 表示匹配 單詞詞首。\> 表示匹配 單詞詞尾。
對應單詞
:%s/four/4/g把所有的four替換為4
但是同時twenty-four被替換為twenty-4
這不合理
我們需要`:%s/\
單詞匹配
如果我們要替換所有的以a開頭d結尾的單詞不允許在詞中進行替換oeasy:%s/\/oeasy/g
add、and 被替換
band 不被替換
刪除空行
首先我們找到空行 /^$
從開頭 ^ 到結尾 $ 中間沒東西
找到了以後,我們來替換%s/^$//這並不能刪除刪完了之後空行還是存在
我們可以使用g命令:g/^$/d
如果開頭結尾之間有空格怎麼辦?/^\s*$ 先找到匹配\s表示空格和tab*表示0-任意多個空格或者tab:g/^\s*$/d
跳脫字元
如果我們要刪除所有//開頭的行這個/需要轉義先搜尋/^//。*$
:%s/^\/\/。*$//g刪除了註釋內容但是但空行還在
:g/^\/\/。*$/d刪除了空行但是開頭有空格和tab的無法刪除
:g/^\s*\/\/。*$/d把 \\ 前面有空格和tab的也刪除了
總結
進行了模式匹配批次替換的的操作
替換單詞:%s/\/oeasy/g
跳脫字元%s/^\/\/。*$/d
刪除空行:g/^\s*$//d
刪除註釋行:g/^\s*\/\/。*$/d
替換還有一些什麼玩法嗎?
下次再說
[Github地址] (https://github。com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee。com/overmind1980/oeasyvim)
[藍橋實驗樓 邀請碼FJWYIMGB] (https://www。lanqiao。cn/courses/2840)