2012-06-01 246 views
1

我試圖做一些查找和替換的Java源文件。正則表達式查找/替換

目前我班有無效的名稱形式(從一個工具,沒有自動命名低劣的進口):

public class [0-9]{2}[A-Za-z]+ 

我想插入周圍數字下劃線,導致的一個有效的類名形式

public class [_][0-9]{2}[_][A-Za-z]+ 

但是使用日食查找和替換工具,用在查找和替換字符串都正則表達式箱檢查不格式化輸出,因爲我想。

這需要

02ListOfValidAppIDs 

,並使其

[-][0-9]{2}[_][A-Za-z]+ 

,而不是

_02_ListOfValidAppIDs 

正則表達式你怎麼能夠使保持任意數量和文字,只是它們插入了替換字符串?

(編輯:作爲一個說明,與預覽功能,我可以看到日食正確找出所有我想要替換的名字,並沒有別的)

+0

你有'sed'嗎? – Beta

+0

你在替換字段中使用了什麼?這聽起來像你需要創建一些捕獲組,以便您可以在替換中反向引用它們。 – TLS

+0

不幸的是,我不在我的機器上,而是在我的實習機器上,並且卡在了WinXP上。有Windows的sed-like下載嗎?如果有的話,我不太熟悉sed以外的那個linux。 –

回答

2

我不知道的確切味道正則表達式,你需要,但這樣的事情應該讓你開始正確的方向。

更新你的「查找」模式使用捕捉組:

(public class)([0-9]{2})([A-Za-z]+) 

然後在更換引用這些捕獲:

\1_\2_\3 

注:正則表達式的一些味道會用{},而不是()代表捕獲的組,並且一些風味將使用$1,$2$3等作爲參考而不是使用\#

+0

謝謝。對於日食(如果有人絆倒這個),它是parens和$# –

2

在Eclipse的查找/替換對話框,這如果在Replace with框中使用

([0-9]+)([A-Za-z]+) 
Find

_$1_$2 

工作正常。

當然,Regular expressions框也必須檢查。