Is there a way in Java (perhaps with an additional Open Source library) to identify the capture groups in a java.util.regex.Pattern
(i.e. before creating a Matcher)
Example from the Java docs:
Capturing groups are numbered by counting their opening parentheses from left to right. In the expression ((A)(B(C))), for example, there are four such groups:
1 ((A)(B(C))) 2 (A) 3 (B(C)) 4 (C)
In principle it should be possible to identify these from the (compiled) Pattern.
UPDATE: From @Leniel and eslewhere it seems that this facility ("named groups") will be present in Java 7 in mid 2011. If I can't wait for that I can use jregex although I'm not quite sure what the API is.
Yes. Check this:
Regex Named Groups in Java
You can find out the number of groups by creating a dummy Matcher, like so:
If you want the actual subexpressions (
((A)(B(C)))
,(A)
, etc.), then no, that information is not available.