存在星号通配符时检索 java.util.regex.Matcher 组的所有值

Retrieving all the values of java.util.regex.Matcher group when star wildcard is present

Text = "AAA1.0BBB2.2CCC33.3" 
R.Expression = ([A-Z]{3}[0-9]*\.[0-9]*)*

预期输出

AAA1.0<br>
BBB2.2<br>
CCC33.3<br>

Matcher.group(0) 仅 returns CCC33.3.

有什么方法可以获得我预期的输出。

谢谢

是的,只需在 while 块中调用 matcher.find() 并删除第一组:

String Text = "AAA1.0BBB2.2CCC33.3";
Pattern pattern = Pattern.compile("[A-Z]{3}[0-9]*\.[0-9]*");
Matcher matcher = pattern.matcher(Text);
while (matcher.find()){
    System.out.println(matcher.group(0)); 
} 

IDEONE demo

请注意,句点符号必须经过两次转义才能被视为文字句点。

围绕整个模式的捕获组的问题是捕获的文本存储在 1 个缓冲区中,每次捕获文本时都会重新写入该缓冲区。因此,您只能得到最后一个 CCC33.3.

[A-Z]{3}[0-9]*[.][0-9]*

只需使用它,因为正则表达式引擎在捕获多个连续组时始终只记住最后一组。