turgar: Regex und Koordinaten ausschneiden

Hallo,

ich versuche gerade in java aus einem Textfeld Koordinaten auszulesen und anschließend lediglich die Ziffern in einem Array zu hinterlegen;

Leider funktioniert mein Ansatz noch nicht richtig.

  
Pattern p = Pattern.compile("(),");  
String[] tempAnfangsSpeicher = p.split(StartList.getText());  

Ich muss noch dazu sagen, dass die Koordinaten in der Form "(1,2),(1,2)"
eingegeben werden sollen;
Von diesen will ich lediglich die Ziffern speichern.
Allerdings stimmt das Pattern nicht, weshalb mein Array im Moment so aussieht:
(1
2)
(1
2)

Kann mir jemand helfen?

Danke!

  1. 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

    1. Vielen Dank Daniel!

      Folgendes hat mich schon ne Schritt weitergebracht:

      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.

      Allerdings ist bei meiner Art der Eingabe (also "(1,2),(1,2)") das erste Feld des Rückgabe-Arrays leer.

      Gibt es eine Möglichkeit auch das noch zu beheben?