Eclipse,正则表达式搜索和替换

115 regex eclipse replace

在eclipse中,是否可以在执行正则表达式搜索和替换时使用匹配的搜索字符串作为替换字符串的一部分?

基本上,我想替换所有出现的

variableName.someMethod()
Run Code Online (Sandbox Code Playgroud)

有:

((TypeName)variableName.someMethod())
Run Code Online (Sandbox Code Playgroud)

其中variableName可以是任何变量名.

sed我可以使用类似的东西:

s/[a-zA-Z]+\.someMethod\(\)/((TypeName)&)/g
Run Code Online (Sandbox Code Playgroud)

也就是说,&表示匹配的搜索字符串.Eclipse中有类似的东西吗?

谢谢!

Nom*_*meN 219

是的,"()"捕获一个组.您可以再次使用$ i,我是第i个捕获组.

所以:

__PRE__

提示:文本框中的CTRL +空格为您提供了正则表达式编写的各种建议.(我担心向下键,在建议列表中删除,会删除文本框中的输入.刺激小错误)


Rig*_*reM 6

使用...
search =(^.*import)(.*)(\(.*\):)
replace = $ 1 $ 2

......替换......

from checks import checklist(_list):
Run Code Online (Sandbox Code Playgroud)

...与...

from checks import checklist
Run Code Online (Sandbox Code Playgroud)



正则表达式中的块由括号(前面没有"\")描述

(^.*import)查找"来自检查导入"并将其加载到$ 1(eclipse开始计数为1)

(.*)找到下一个"一切"直到下一次遇到"("并加载到$ 2. $ 2停在"("因为下一部分(见下面的下一行)

(\(.*\):)说"在第一次遇到"( "在启动块$ 2后...停止块$ 2并启动$ 3. $ 3加载"('任何文本'):"或者,在示例中,"(_ list):"

然后在替换中,只需将$ 1 $ 2用前两个替换所有三个块.



截图


pad*_*ist 6

NomeN已经正确回答了,但是这个答案对于像我这样的初学者来说没有多大用处,因为我们还有另一个问题需要解决,而且我们不知道如何在其中使用RegEx 。所以我对此添加一些解释。答案是

搜索:(\w+\\.someMethod\\(\\))

代替:((TypeName)$1)

这里:

正在搜索:

  • 首先也是最后一个()描述了正则表达式中的一个组

  • \w描述单词(字母数字+下划线)

  • +描绘一个或多个(即字母数字+下划线中的一个或多个)

  • .是描述任何字符的特殊字符(即.+表示任何字符中的一个或多个)。因为这是一个特殊的字符来描述.我们应该给它一个转义字符,即\.

  • someMethod是按要搜索的方式给出的。

  • 两个括号(,)与转义字符一起给出,因为它们是用于描述组的特殊字符(我们将在下一点讨论组)

替换:

  • 给出了((TypeName)$1),这里$1描述了该组。这是搜索字段中第一个(和最后一个括号内包含的所有字符)

  • 另请确保您已选中查找替换框中的“正则表达式”选项