在用VS做編碼開發時,我們常會用到其自帶的"查找和替換"這個工具。
關於用正則替換,有一些容易被遺忘的非常有用的功能。比如,正則動態插入並替換。
通常,如果我們要查找源文件中的固定字符“A”,並替換成固定字符“B”,那麼簡單,只需分別在查找框輸入“A”和替換框輸入“B”,然後點查找、替換按鈕就可以了,這個大家都用熟了。
考慮一下複雜點的,麻煩點的情況:
如果我們要將 “//這是A” 、“//這是B”、“//各種字符”,替換成如下:
/// <summary>
///這是A
/// </summary>
/// <summary>
///這是B
/// </summary>
/// <summary>
///各種字符
/// </summary>
那麼就要使用正則來查找,並且,也用正則來替換。
查找“//xxx”的正則表達式,可以這麼寫://(.{1,}) 大家也可以寫成其他樣子的,自由發揮,只要能正確匹配查找就可以了。
替換的表達式,先分析一下替換的字符,如下:
/// <summary>
這行是固定字符
/// XXX 這行///後面的XXX是動態的,XXX是從被替換的字符中查找匹配得來,再插入這裏的。
/// </summary> 這行是固定字符
由於替換的字符中,有些是動態查找出來,再原樣插入並替換回去的,這就需要動態插入的支持。
變態的是,強大得近乎變態的微軟製造出的強大而變態的VS自帶的“查找和替換”工具,支持正則動態插入!
其表達式如下:
/// <summary>\n/// $1 /// </summary>\n
細心的你,一定一眼就發現了“$1” 這個奇怪的寫法,你可能已經猜出它的作用了,沒錯!它就是//(.{1,})表達式的第1個匹配項,$2是第2個匹配項,$3是第3個匹配項……以此類推。
擴展思考一:那第0個匹配項呢? 擴展思考二:爲什麼$1後面沒有\n
?
因此:
將 //(.{1,}) 填入查找框中。
將 /// <summary>\n/// $1 /// </summary>\n 填入替換框中。
點擊查找並替換按鈕,就會將源文件中的 //xxx 替換成
/// <summary>
///
xxx
/// </summary>
寫到這,大家都已經知道是什麼回事,並也知道什麼用了。
如果大家還不懂,那就是我寫得不夠好,還請見諒。