Если вы используете Java> = 9, вы можете использовать метод results () в Matcher, чтобы получить поток MatchResult и создать список объектов Point:
String input = "(1,2),(3,4),(5,6),(500,600),(1000,2000)";
Pattern cp = Pattern.compile("(\\d+(?=,),(?<=,)\\d+)");
Matcher matcher = cp.matcher(input);
List<Point> points = matcher.results()
.map(coordinate -> {
String xy = coordinate.group();
int x = Integer.parseInt(xy.split(",")[0]);
int y = Integer.parseInt(xy.split(",")[1]);
return new Point(x, y);
})
.collect(Collectors.toList());
System.out.println("points: " + points);
Result:
баллов: [java .awt.Point [x = 1, y = 2], java .awt.Point [x = 3, y = 4], java .awt .Point [x = 5, y = 6], java .awt.Point [x = 500, y = 600], java .awt.Point [x = 1000, y = 2000]]
Шаблон регулярного выражения получает координаты без скобок. Затем в методе map используется метод split, чтобы получить координаты x и y и создать объект Point.