在eclipse中,在执行正则表达式搜索和替换时,是否可以将匹配的搜索字符串用作替换字符串的一部分?
基本上,我想替换所有出现的
variableName.someMethod()
使用:
((TypeName)variableName.someMethod())
其中 variableName 可以是任何变量名。
在 sed 中,我可以使用以下内容:
s/[a-zA-Z]+\.someMethod\(\)/((TypeName)&)/g
即,& 表示匹配的搜索字符串。 Eclipse中有类似的东西吗?
谢谢!
答案 0 :(得分:214)
是的,“()”捕获一个组。你可以用$ i再次使用它,我是第i个捕获组。
所以:
搜索:
(\w+\.someMethod\(\))
替换:
((TypeName)$1)
提示:文本框中的 CTRL + Space 为您提供了正则表达式写作的各种建议。
答案 1 :(得分:6)
使用......
search =(^。* import)(。*)(\(。* \):)
replace = $ 1 $ 2
......替换......
from checks import checklist(_list):
...与...
from checks import checklist
正则表达式中的块由括号(其前面没有" \")描述
(^。* import)从检查导入"中找到"并将其加载到$ 1(eclipse从1开始计数)
(。*)找到下一个"一切"直到下一次遇到"("并将其加载到$ 2。$ 2停止在"("因为下一部分(见下面的下一行))
(\(。* \):)说"在第一次遇到"("在开始块$ 2后...停止块$ 2并开始$ 3. $ 3加载" ('任何文字'):"或者,在示例中,"(_ list):"
然后在替换中,只需将$ 1 $ 2替换为前两个块的所有三个块。
答案 2 :(得分:4)
NomeN已正确回答,但这个答案对像我这样的初学者来说并没有多大用处,因为我们还有其他问题要解决,我们也不知道如何在那里使用RegEx 。所以我正在为此添加一些解释。答案是
搜索:(\ w + \ .someMethod \(\ _))
替换:((TypeName)$ 1)
下面:
在搜索中:
第一个也是最后一个'('')'描述正则表达式中的一个组
' \ W'描绘单词(字母数字+下划线)
' +'描绘了一个或多个(即一个或多个字母数字+下划线)
''是一个描绘任何角色的特殊角色(即+表示 一个或多个任何角色)。因为这是一个特殊的角色 描绘一个'。我们应该给它一个转义字符,即'。'
'的someMethod'给出了要搜索的内容。
两个括号'(',')'与逃脱字符一起给出 因为它们是用于描绘群体的特殊角色 (我们将在下一点讨论小组)
取代:
给出' ((TypeName)$ 1)',这里$ 1描述了 组。这就是第一个中包含的所有字符 和最后一个括号'(',')'在搜索栏中
同时确保您已检查了正则表达式'选项 找一个替换盒
有关RegEx的更多信息,请参阅http://regexr.com/。
答案 3 :(得分:2)
至少在STS(SpringSource工具套件)中,组从0开始编号,因此替换字符串将是
replace: ((TypeName)$0)
答案 4 :(得分:0)
对于某人需要解释和如何在eclipse上使用regx的示例,希望这将被发现有用。这是我的问题。
我想重命名
/download.mp4^lecture_id=271
到
/271.mp4
可能有很多这些。
你应该怎么做。
然后点击查找/替换按钮