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

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

基本上,我想替换

variableName.someMethod()

与:

((TypeName)variableName.someMethod())

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

Sed中,我可以使用类似于:

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

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

谢谢!

116491 次浏览

是的,( )捕获一个组。你可以在 $i中再次使用它,其中 i是第九个捕获组。

所以:

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

更换: ((TypeName)$1)

提示: 文本框中的 Ctrl + Space为正则表达式写作提供了各种各样的建议。

至少在 STS (SpringSource 工具套件)组是从0开始编号的,所以替换字符串将是

replace: ((TypeName)$0)

对于需要解释和示例说明如何在 Eclipse 中使用 regxp 的人来说。下面是我的例子来说明这个问题。

enter image description here

我想重命名

/download.mp4^lecture_id=271

/271.mp4

可能有很多这样的东西。

下面是应该怎么做。

enter image description here

然后点击查找/替换按钮

利用..。
Search = (^ . * import)(. *)((. *) :)
替换 = $1 $2

取代了。

from checks import checklist(_list):

和..。

from checks import checklist



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

(^ . * import)查找“ from check import”并将其加载到 $1(eclipse 从1开始计数)

(.*)查找下一个“ everything”,直到遇到下一个“(”)并将其加载到 $2。$2停在“(”因为下一部分(见下一行)

(\(.*) :)表示“在第一次遇到时”(“在启动块 $2之后... ... 停止块 $2并启动 $3。”。$3加载了“(‘ any text’) :”或者,在示例中,加载了“(_ list) :”

然后,在替换,只是把 $1 $2代替所有三块,只有前两个。



Screenshot

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

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

更换: ((TypeName)$1)

这里:

搜索:

  • 第一个和最后一个 ()用正则表达式描述一个组

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

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

  • .是一个特殊的字符,它描述了任何字符(即 .+的意思 因为这是一个特殊的字符 为了描绘一个 .,我们应该给它一个转义字符,即 \.

  • 给出了要搜索的 someMethod

  • 给出了两个括号 ()以及转义字符 因为它们是用来描绘一个群体的特殊人物 (我们将在下一点讨论小组)

取代:

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

  • 还要确保您已经选中了“正则表达式”选项 找一个替换箱子