Java中是否有一种方法(可能还有一个额外的开源库)来识别java.util.regex.Pattern
中的捕获组(即在创建匹配器之前)
来自Java文档的示例:
捕获组编号为 算上他们的开头括号 从左到右。在表达中 (例如,(A)(B(C))) 四个这样的团体:
1 ((A)(B(C))) 2 (A) 3 (B(C)) 4 (C)
原则上应该可以从(编译)模式中识别这些。
更新: 从@Leniel和eslewhere看来,这个工具(“命名组”)将在2011年中期出现在Java 7中。如果我不能等待,我可以使用jregex虽然我不太确定API是什么。
答案 0 :(得分:7)
您可以通过创建虚拟匹配器找到组的数字,如下所示:
Pattern p = Pattern.compile("((A)(B(C)))");
System.out.println(p.matcher("").groupCount());
如果您想要实际的子表达式(((A)(B(C)))
,(A)
等),那么不,该信息不可用。
答案 1 :(得分:2)
是。检查一下: