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


119

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

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

variableName.someMethod()

与:

((TypeName)variableName.someMethod())

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

sed中,我可以使用类似以下的内容:

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

即,表示匹配的搜索字符串。Eclipse中有类似的东西吗?

谢谢!


:Eclipse的正则表达式良好的文档help.eclipse.org/kepler/...
科罗布峡谷

Answers:


225

是的,“()”捕获一个组。您可以与$ i再次使用它,其中i是第i个捕获组。

所以:

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

更换: ((TypeName)$1)

提示:文本框中的CTRL+ Space可为您提供各种有关正则表达式编写的建议。


这是一个很好的答案和有用的提示。如果不做更详细的描述,它会更有帮助。
iammilind

Bravo Eclipse,您正确实现了此功能!
Kenogu Labz 2013年

我特别喜欢“ Unicode字符的十六进制代码”的示例:)
Stewart Murrie 2014年

我想添加一些对我有帮助的代码。我需要更换每一个stringVar.equals("xxx")使用"xxx".equals(stringVar)。我在“查找/替换”对话框中使用了以下正则表达式:search: ([^()! ]+).equals\("(.*)"\)replace: "$2".equals\($1\)
LaDude 2014年

不适合我。总是替换第一组...?
RightmireM 2015年

6

使用...
搜索=(^。* import)(。*)(\(。* \):)
replace = $ 1 $ 2

...取代...

from checks import checklist(_list):

...与...

from checks import checklist



正则表达式中的块用圆括号表示(不带“ \”)

(^。* import)从“ checks import”中查找“并将其加载到$ 1中(日食从1开始计数)

(。*)找到下一个”一切”,直到下一个遇到“(”并将其加载到$ 2。由于下一部分,$ 2停在“(”处(请参见下一行)

(\(。* \):)说“在第一个遇到的“( “在开始块$ 2 ...停止块$ 2并开始$ 3之后。$ 3加载了“('any text'):”,在示例中为“(_list):”

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



屏幕截图


3

NomeN的答案正确,但是对于像我这样的初学者来说,这个答案没有多大用处,因为我们将要解决另一个问题,并且我们不知道该如何使用RegEx。因此,我为此添加了一些解释。答案是

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

替换:((TypeName)$ 1)

这里:

正在搜索:

  • 第一个和最后一个'('')'描述了正则表达式中的组

  • '\ w'表示单词(字母数字和下划线)

  • “ +”表示一个或多个(即字母数字和下划线中的一个或多个)

  • '。是描述任何字符的特殊字符(即。+表示任何一个或多个字符)。因为这是描绘'。'的特殊字符。我们应该给它加上一个转义字符,即“。”

  • 给出了“ someMethod”,以进行搜索。

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

在替换中:

  • 它被赋予' (((TypeName)$ 1) ',这里$ 1描述了该组。这就是在搜索字段的第一个和最后一个括号“(',')”中包含的所有字符

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

有关RegEx的更多信息,请访问http://regexr.com/



0

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

在此处输入图片说明

我想重命名

/download.mp4^lecture_id=271

/271.mp4

这些可以有多个。

这是应该如何做。

在此处输入图片说明

然后点击查找/替换按钮

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.