【问题标题】:Eclipse regex find and replaceEclipse 正则表达式查找和替换
【发布时间】:2010-08-11 12:19:26
【问题描述】:

我想替换下面的语句

ImageIcon("images/calender.gif");

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

任何人都可以建议一个正则表达式在 eclipse 中执行此操作。任何文件名都可以代替“calender.gif”。

【问题讨论】:

    标签: regex eclipse


    【解决方案1】:

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

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

    并替换为:

    ImageIcon(res.getResource($1))
    

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

    […]character class[aeiou] 之类的东西匹配任何一个小写元音。 [^…] 是一个 否定 字符类。 [^aeiou] 匹配小写元音之一。

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

    所以模式分解如下:

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

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

    参考文献

    【讨论】:

    • 你能解释一下上面的正则表达式吗?
    • @Emil:请注意,这不会处理例如ImageIcon(getPath() + getFilename()) 和类似的时髦的东西。通用 Java 表达式不是正则表达式,因此通用解决方案应使用正则表达式以外的内容。
    【解决方案2】:

    Ctrl-F

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

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

    勾选Regular Expressions复选框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 2015-03-25
      • 2011-06-16
      • 1970-01-01
      • 2017-01-28
      • 2015-01-11
      • 2012-12-02
      相关资源
      最近更新 更多