我想替换以下声明
ImageIcon("images/calender.gif");
与
ImageIcon(res.getResource("images/calender.gif"));
任何人都可以建议正则表达式在eclipse中执行此操作。而不是“calender.gif”任何文件名都可以来。
答案 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
复选框。