簡體   English   中英

使用IntelliJ中的Regex搜索和替換文本

[英]Search and replace text using Regex in IntelliJ

我正在使用最新版本的IntelliJ Idea 2017.1

在我的項目中,我對此函數有很多調用

foo.bar(x)

我想搜索並將其替換為x.toFoo

問題是X可以是任何東西。 它可以是任何變量,也可以是長函數調用。 所以我們真的不知道x的模式。

我嘗試過這個正則表達式

foo.bar(\\S+)但這不能工作,因為它會選擇許多其他內容。

我也嘗試了foo.bar(\\()(.*)(\\))這似乎選擇了正確的東西。 但在更換時。 我怎么記得捕獲。*中的內容?

foo.bar(myobj.copy(myid = hisId))

這應該成為

myobj.copy(myid = hisId).toFoo

另一個例子可以是

foo.bar(List(1, 2, 3))

List(1, 2, 3).toFoo

由於您的字符串可以帶有嵌套的括號,所以我建議使用遞歸:

foo\.bar(\(([^()]|(?1))*\))

實時預覽

但是IntelliJ不支持該功能( 實際上還沒有看到任何支持遞歸的IDE )。

因此,您可以使用:

foo\.bar[^\(]*(\(.*\))[^\)]*?

實時預覽

鑒於此:

foo.bar()
foo.bar(1, 2, 3)
foo.bar(1, (2 + (3 + 4)), 5)

您沒有提供任何示例,所以我只做了一些包含嵌套括號的示例。

結果是:

().toFoo
(1, 2, 3).toFoo
(1, (2 + (3 + 4)), 5).toFoo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM