在java中提取两个相同字母之间的值

Kri*_*hat 1 java regex

String data ="A486A946D48967E456F679B3425B234C847C
             A725A872D74985E45346F679B86705B234C2847C
Output should be in format like below:
-486
-3425
-847

-725
-86705
-2847
Run Code Online (Sandbox Code Playgroud)

以上是我想要提取值的数据.它们的格式相同,如:A...A...D...E...F...B...B...C...C点表示数字.

我想提取上面A-A, B-B和之间的数字C-C.所有这些数据都以字符串形式存储在一行中.我使用了模式匹配器,但它没有用.请给我任何建议.

Joo*_*gen 6

Pattern pattern = Pattern.compile("([A-Z])(\\d+)\\1");
Matcher m = pattern.matcher(data);
while (m.find()) {
    String letter = m.group(1);
    String digits = m.group(2);
    int n = Integer.parseInt(digits);
    System.out.printf("- %s = %d%n", letter, n);
}
Run Code Online (Sandbox Code Playgroud)

该模式包括:

  • ([A-Z]) =第1组,大写字母
  • (\d+) =具有一个或多个数字的组2
  • \1 =第1组的值