2009-09-03 31 views
101

在eclipse中,執行正則表達式搜索和替換時,是否可以使用匹配的搜索字符串作爲替換字符串的一部分?Eclipse,正則表達式搜索和替換

基本上,我想替換的

variableName.someMethod() 

與所有出現:

((TypeName)variableName.someMethod()) 

VARIABLENAME可以是任意變量名都沒有。

sed的我可以使用類似:

s/[a-zA-Z]+\.someMethod\(\)/((TypeName)&)/g 

也就是說,&代表匹配的搜索字符串。 Eclipse中有類似的東西嗎?

謝謝!

+0

良好的Eclipse正則表達式文檔:http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.jubula.client.ua.help%2Fhtml%2Freference%2Fnode4.html – 2016-09-15 19:59:07

回答

201

是的,「()」捕獲一個組。你可以用$ i再次使用它,其中我是第i個捕獲組。

這樣:

search: (\w+\.someMethod\(\)) 
replace: ((TypeName)$1) 

提示:在文本框中Ctrl +空格鍵爲您提供了各種建議,爲正則表達式寫作。 (恐怕向下鍵,向下推薦列表,刪除文本框中的輸入。刺激小錯誤)

+1

它沒有爲moi :( – kellogs 2012-02-02 21:01:32

+12

偉大的答案,尤其是提示是一個額外的點值得:) – 2012-06-28 13:38:26

+0

這是一個很好的答案和有用的提示。如果更詳細地描述它會更有幫助。 – iammilind 2013-05-24 16:58:52

2

至少在STS(SpringSource Tool Suite)中,組從0開始編號,所以替換字符串將是

replace: ((TypeName)$0) 
+5

這不是真正的afaik。 $ 0表示整個原始搜索詞。在這種情況下,我想這可能巧合地工作。 – 2011-11-28 11:32:18

0

對於需要解釋和例子如何在eclipse上使用regx,希望這會被發現有用。這是我的問題。

enter image description here

我要重命名

/download.mp4^lecture_id=271 

/271.mp4 

而且可以有很多的這些。

你應該如何做到這一點。

enter image description here

然後點擊查找/替換按鈕

6

使用...
搜索=(^ *進口)(。*)(\(。* \):)
替換= $ 1 $ 2

...替換...

from checks import checklist(_list): 

...與...

from checks import checklist 



塊中的正則表達式是由括號劃定

(^(其不是由 「\」 開頭)。*導入)找到「from checks import」並將其加載到$ 1(eclipse從1開始計數)

(。*)找到下一個「everything」,直到下一次遇到「(」並加載到2美元。 (\(。* \):) :)「在第一次遇到」(「在開始塊$ 2 ...停止塊$ 2之後」)時,在「(」因爲下一部分(參見下一行)012美元停止$ 2並開始$ 3。$ 3獲得加載「('任何文本'):」或,在這個例子中,「(_list):」

然後在替換,只需把$ 1 $ 2替換所有三個塊只有前兩種。



Screenshot

2

NomeN已回答正確,但是這一個對於像我這樣的初學者來說,swer不會有太大的用處,因爲我們將會解決另一個問題,並且我們不知道如何在那裏使用RegEx。所以我給這個添加了一些解釋。答案是

搜索:(\ w + \的someMethod \(\)。)

取代:((類型名)$ 1)

這裏:

在搜索:

  • 第一個和最後一個'('')'描述了正則表達式中的一個組

  • '\ W' 描繪字(字母數字+下劃線)

  • '+' 示出了一個或多個(即,一個或多個字母數字+下劃線的)

  • ''是描述任何字符的特殊字符(即+意味着任何字符中的一個或多個字符)。因爲這是一個特殊字符 來描述'。'我們應該給它一個轉義字符,即'。'

  • 'someMethod'被給出,因爲它被搜索。

  • 兩個括號「(」,「)」與轉義字符 一起被給予的,因爲它們是被用來描述一組 特殊字符

(我們將關於下一個點組討論)

在更換:

  • 它被賦予 '((類型名)$ 1)',這裏$ 1描繪了 組。這是在第一 和最後一個括號括起來的所有字符「(」,「)」在搜索領域

  • 另外,還要確保你已經檢查了「正則表達式」選項 找到一個替代箱

有關RegEx的更多信息,請參閱http://regexr.com/

相關問題