繁体   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