2011-04-08 56 views
5

我想使用eclipse搜索/替換將log4j添加到傳統軟件。如何重複使用正則表達式匹配的文本?

這個想法是找到所有的類聲明並將其替換爲聲明本身以及下一行中的記錄器定義。

搜索

".*class ([A-Z][a-z]+).*\{" 

取代:

"final static Logger log = Logger.getLogger($1.class);" 

我怎麼能預先考慮匹配模式(類定義)來替換字符串?

+0

感謝您的回答,救了我幾個小時。我現在使用「$ 0 \ n \ n \ tfinal靜態記錄器日誌= Logger.getLogger($ 1.class);」作爲替換字符串。 – stacker 2011-04-08 14:56:33

回答

3

我認爲你需要這樣的:

搜索:

(.*class ([A-Z][a-z]+).*\{) 

取代:

$1\Rfinal static Logger log = Logger.getLogger($2.class); 
+0

注意創建換行符的\ R。也許你想添加一些標籤\ t,所以記錄器聲明是縮進的。 – janhink 2011-04-08 14:39:26

1

你總是可以捕捉整個事情,並把它放在內捕獲組住在第二個反向引用。

查找:

(.*class ([A-Z][a-z]+).*\{)

替換:

$1 final static Logger log = Logger.getLogger($2.class);