正则表达式捕获组中的组

在Java中,如何获取组内的所有组(正则表达式)。
例如:使用(([AZ] [az] +)+)([0-9] +)测试一个字符串:“AbcDefGhi12345”。
然后得到结果:
比赛():是
groupCount():3
组(1):ABCDEFGHI
组(2):GHI
组(3):12345

但我想分别获得String“Abc”,“Def”,“Ghi”,“12345”。
我怎么能用正则表达式做到这一点?

正则表达式无法处理重复的组,它可以返回任何捕获的组(在您的情况下,它返回"Ghi" )。

以下示例将打印:

 Abc Def Ghi 12345 

代码:

 public static void main(String[] args) { String example = "AbcDefGhi12345"; if (example.matches("(([AZ][az]+)+)([0-9]+)")) { Scanner s = new Scanner(example); String m; while ((m = s.findWithinHorizon("[AZ][az]+", 0)) != null) System.out.println(m); System.out.println(s.findWithinHorizon("[0-9]+", 0)); } } 
 Pattern p = Pattern.compile("([AZ][az]+|(?:[0-9]+))"); Matcher m = p.matcher("AbcDefGhi12345"); while(m.find()){ System.out.println(m.group(1)); } 

像hzh的答案有一些格式和一点点简单:

 Pattern p = Pattern.compile("[AZ][az]+|[0-9]+"); Matcher m = p.matcher("AbcDefGhi12345"); while(m.find()){ System.out.println(m.group(0)); } 

给你

 Abc Def Ghi 12345