想在代码中搜索Math.pow( 3.0,16.0)这个方法正则写为
String regEx ="(Math.pow)"
        +"\\s*\\(\\s*"
                 +"([+-]?\\d+(\\.\\d+)?)"
                    +"\\s*,\\s*"
        +"([+-]?\\d+(\\.\\d+)?)"
        +"\\s*\\)";想重命名捕获组 String regEx ="(?<a>Math.pow)"
 +"\\s*\\(\\s*"
+"(?<b>[+-]?\\d+(\\.\\d+)?)"
+"\\s*,\\s*"
+"(?<c>[+-]?\\d+(\\.\\d+)?)"
+"\\s*\\)";
编译不通过..正则表达式用(?<name>exp)这个语法不是可以重命名捕获组吗?

解决方案 »

  1.   

    很遗憾,在 Java 中直到 JDK 1.7_ea_b50 才实现命名捕获组。Java Bug Database No.6360801
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6350801JDK 1.7 build b50 change log
    http://download.java.net/jdk7/changes/jdk7-b50.htmlJDK 7 预计会在几个月之后正式发布,现在还处于 early access 的 buid 版本,目前不建议使用。
      

  2.   

    使用匿名捕获组取代就可以了,JDK 1.4 及以上的版本可以支持共 9 个捕获组,对于普通应用来说已是足矣!