1. 程式人生 > >在vs2013中使用正則表示式查詢和替換文字內容

在vs2013中使用正則表示式查詢和替換文字內容

        我們有的時候需要替換程式碼中的某些內容,因為替換的內容“不一致”,所以不能簡單的使用一個replace搞定。這裡有幾個解決方法,核心思想是一致的,程式設計師不要做體力活,能交給程式或指令碼的就交給程式或指令碼來完成。

        我先提一個替換的需求,這個在實際工作中是很常見的。比如

        把所有的toke[TOKEN_ENUM_ATTACK], token[TOKEN_ENUM_MAGIC]這樣的字串替換為TOKEN_ENUM_ATTACK, TOKEN_ENUM_MAGIC,也就是說去掉token[],直接使用列舉值。

       再比如,把所有的"字串"替換為_T("字串")。這個很常見,涉及到unicode和ansi的時候必然要被這東西噁心一遍。

       替換方法:

1、使用指令碼。這個最靈活,當然成本相對來說也有些大。我有點害怕一不留神指令碼寫錯了就把我的所有檔案都幹掉了。

2、使用高階些的文字編輯器。比如sublime text就支援正則表示式的替換。你需要先把資料夾加入到workspace中。

3、vs自帶正則表示式的查詢和替換。由於vs2013跟之前語法略有差異,網上很多都是舊的,所以這裡重點介紹下。


如上圖所示,勾上 Use Regular Expressions就可以使用了,非常簡單。如果正則表示式還不太熟,可以點選文字框旁邊的那個(a)+按鈕。它列出了所有常用的表示式形式。

這裡使用了捕獲相關,網上常見的說法是使用大括號,但是在vs2013中是使用小括號來定義捕獲內容,這個捕獲規則是跟python一致的。比如 token\[(.*)\]就是把中括號內部的東西全部捕獲。而替換的時候可以使用$1來代表捕獲內容。於是上面的替換就代表去除token[],保留中括號內部的文字。