# HG changeset patch # User sherman # Date 1256150440 25200 # Node ID 679d00486dc66654d9cd4bde59a9ce335beaa677 # Parent db7d59c0b0e6cfc0ac57c8caf1e3254723af5538 6878475: Better syntax for the named capture group in regex Summary: Updated the syntax of the newly added named capture group Reviewed-by: martin, alanb diff -r db7d59c0b0e6 -r 679d00486dc6 jdk/src/share/classes/java/util/regex/Matcher.java --- a/jdk/src/share/classes/java/util/regex/Matcher.java Tue Oct 20 09:51:28 2009 -0700 +++ b/jdk/src/share/classes/java/util/regex/Matcher.java Wed Oct 21 11:40:40 2009 -0700 @@ -688,7 +688,7 @@ * *

The replacement string may contain references to subsequences * captured during the previous match: Each occurrence of - * $<name> or $g + * ${name} or $g * will be replaced by the result of evaluating the corresponding * {@link #group(String) group(name)} or {@link #group(int) group(g)} * respectively. For $g, @@ -770,7 +770,7 @@ // more appropriate. nextChar = replacement.charAt(cursor); int refNum = -1; - if (nextChar == '<') { + if (nextChar == '{') { cursor++; StringBuilder gsb = new StringBuilder(); while (cursor < replacement.length()) { @@ -787,13 +787,17 @@ if (gsb.length() == 0) throw new IllegalArgumentException( "named capturing group has 0 length name"); - if (nextChar != '>') + if (nextChar != '}') throw new IllegalArgumentException( - "named capturing group is missing trailing '>'"); + "named capturing group is missing trailing '}'"); String gname = gsb.toString(); + if (ASCII.isDigit(gname.charAt(0))) + throw new IllegalArgumentException( + "capturing group name {" + gname + + "} starts with digit character"); if (!parentPattern.namedGroups().containsKey(gname)) throw new IllegalArgumentException( - "No group with name <" + gname + ">"); + "No group with name {" + gname + "}"); refNum = parentPattern.namedGroups().get(gname); cursor++; } else { diff -r db7d59c0b0e6 -r 679d00486dc6 jdk/src/share/classes/java/util/regex/Pattern.java --- a/jdk/src/share/classes/java/util/regex/Pattern.java Tue Oct 20 09:51:28 2009 -0700 +++ b/jdk/src/share/classes/java/util/regex/Pattern.java Wed Oct 21 11:40:40 2009 -0700 @@ -484,7 +484,7 @@ *

Group name
*

A capturing group can also be assigned a "name", a named-capturing group, * and then be back-referenced later by the "name". Group names are composed of - * the following characters: + * the following characters. The first character must be a letter. * *