Eclipse正则表达式找到并替换

时间:2010-08-11 12:19:26

标签: regex eclipse

我想替换以下声明

ImageIcon("images/calender.gif");

ImageIcon(res.getResource("images/calender.gif"));

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

2 个答案:

答案 0 :(得分:10)

您可以找到此模式(在正则表达式模式下):

ImageIcon\(("[^"]+")\)

并替换为:

ImageIcon(res.getResource($1))

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

[…]character class。像[aeiou]这样的东西匹配任何一个小写元音。 [^…]否定的字符类。 [^aeiou]除了小写元音之外的任何内容匹配。

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

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

      literal(   literal)
         |          |
ImageIcon\(("[^"]+")\)
           \_______/
            group 1

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

参考

答案 1 :(得分:0)

控制-F

查找:ImageIcon\("([^\"]*)"\);

替换为:ImageIcon(res.getResource("\1"));

选中Regular Expressions复选框。