網頁

2018年5月15日 星期二

Regular Expression in Search and Replace in VIM

目標 : 把原本的特訂字串變成大寫

輸入範例 :
#define ChipEndAddr_L 0x0197
#define PAGE0 0x0198

希望得到的輸出 :
#define CHIPENDADDR_L 0x0197
#define PAGE0 0x0198

命令如下
%s/#define\s\+\([a-zA-Z0-9_]\+\)/#define\ \U\1/g

解釋
%s 指要搜尋取代的範圍是整個檔案
搜尋的字串以 #define 起頭
接著\s\+ 代表的是 \s 泛指空白的字元例如 tab, space, \+ 指的是出現至少一次
接著出現 用 \(  以及\) 包裹住的代表之後可以存入變數的字串
被\(  ... \) 包圍住的是 [a-zA-Z0-9_]\+ 也就是a 到 z, A 到 Z, 0 到 9, 還有底線隨便的字元組合

接著用 /  之後是指要替換的字串, #define 加一個空白
接著 \U 代表的是把之前找到的 \( ... \) 包圍的字串改成大寫, 這個字串用 \1 代表
如果之前在尋找的規則中有兩個以上的 \( ... \) 那數字代碼就是遞增 例如 \2
/g 代表的就是不只替代一行

沒有留言:

張貼留言

Python TypeError: 'module' object is not callable

程式碼其實相當簡單 import random random.random() 那問題出在哪?出在當初的檔名取名為 random.py 結果造成 Python 在 import 的時候造成問題。所以在取名Python 的檔名時,切記不要取成跟 Default Module...