Eclipse正则表达式找到并替换

Emi*_*mil 5 regex eclipse

我想替换以下声明

ImageIcon("images/calender.gif");
Run Code Online (Sandbox Code Playgroud)

ImageIcon(res.getResource("images/calender.gif"));
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议正则表达式在eclipse中执行此操作.而不是"calender.gif"任何文件名都可以来.

pol*_*nts 10

你可以找到这种模式(在正则表达式模式下):

ImageIcon\(("[^"]+")\)
Run Code Online (Sandbox Code Playgroud)

并替换为:

ImageIcon(res.getResource($1))
Run Code Online (Sandbox Code Playgroud)

\(\)这是因为它们的字面匹配模式逃脱括号.未转义的大括号(…)设置捕获组1,它匹配双引号字符串文字,它不应该有双重引号(我认为无论如何都是非法的文件名).

[…]是一个角色类.类似于[aeiou]匹配任何一个小写元音的东西.[^…]是一个否定的角色类.[^aeiou]匹配除小写元音之外的任何东西.

+是一次或多次重复,因此[^"]+匹配除双引号之外的所有内容的非空序列.我们只是围绕这个模式"来匹配双引号字符串文字.

所以模式就像这样崩溃了:

      literal(   literal)
         |          |
ImageIcon\(("[^"]+")\)
           \_______/
            group 1
Run Code Online (Sandbox Code Playgroud)

在替换字符串中,$1替换组1匹配的字符串.

参考