Daniel Thoma: Regex und Koordinaten ausschneiden

Beitrag lesen

Hallo turgar,

Pattern p = Pattern.compile("(),");

() markieren nur eine Gruppe, in dem Fall also eine leere.
Deswegen steht da eigentlich nur das Komma.
Die Frage ist nun, wie genau Du mit dem Muster die Eingabe überprüfen willst. Wenn Du einfach nur die Zahlen willst, kannst Du so ein Muster nehmen: "[(),]+" und daran splitten.

Wenn Du wirklich die Eingabe prüfen willst, geht das eher so:
Pattern p = Pattern.compile("\((\d+),(\d+)\)(,)?");
Matcher m = p.matcher(input);
while (m.regionStart() < input.length()) {
  if(!p.lookingAt()) {
    throw new Exception();
  }
  System.out.println("Point: " + m.group(1) + "," m.group(2));
  matcher.region(matcher.end(), input.length());
  if (p.group(3) == null && m.regionStart() < input.length()) {
    throw new Exception();
  }
}

Grüße

Daniel