2013-12-17 39 views
0

不知道這是可能的,但我試圖做一個動態查找/ IntelliJ IDEA的替換...正則表達式:如何引用子表達式中多次出現替換字符串

在我的Java項目中有包含字符串連接這樣幾種方法:

return "[foo=" + foo + ", bar=" + bar + ", this=" + this + ", that=" + that + "]";

我寫了下面的正則表達式找到所有這些現象:

return (\"[^\"]+\")+((\s\+\s)+([\pL\pN\r\s]*)+(\s\+\s)+(\"[^\"]+\"))*;

現在我要替換這些級聯具有同等String.format()的回報,這樣的:

return String.format("[foo=%s, bar=%s, this=%s, that=%s]", foo, bar, this, that);

我更換正則表達式看起來像這樣至今:

return String.format\($1$6,$4\);

...但幾件事情正在發生,還有一些棘手的要求。

  1. $4是空的。
  2. $6僅返回最後一次出現(\"[^\"]+\")
  3. 我需要爲每個發生的$4生成「,$ 4」。
  4. 我需要剝去$1$6中的引號,並在任何「=」符號後附加「%s」。

這可能嗎?任何想法如何做到這一點,允許串聯任意數量的字符串?

在此先感謝!

+0

以下是IntelliJ文檔的鏈接:http://www.jetbrains.com/idea/webhelp/finding-and-replacing-text-in-file.html –

回答

2

您不需要正則表達式查找和替換。如果你把你的光標放在你的字符串連接的中間,應該會出現一個黃色的燈泡。如果你點擊燈泡(或者更好,alt-Enter),它應該給你至少三個不同的代碼行重構。

請參閱意向文檔here

+0

IntelliJ不能做什麼? *昏厥* –