Reguläre Ausdrücke



  • Ich habe Strings mit folgendem Aufbau:
    zzz_alphanum1 - alphanum2.erweiterung

    zzz können beliebige Ziffern sein, immer drei Stück,
    _ ist der underscore
    ' - ' leerzeichen + minus + leerzeichen
    alphanum1: ein beliebig langer alphanumerischer String
    alphanum2: dito
    .erweiterung: Punkt mit Zeichenkette. Wird nicht benötigt

    Aus dem String soll nun von zzz_ und " - " entfernt werden,
    alphanum1 und alphanum2 sollen in jeweils neuen Strings
    abgelegt werden.

    Beim Wälzen der Doku fand ich in der Stringklasse die Methode:
    String [] split(regexp)

    Jetzt habe ich es geschafft zzz_ zu loeschen:
    split("[0-9][0-9][0-9]_");

    Wie kann ich denn in EINEM Aufruf von split noch
    den Rest erledigen?

    Warum bekomme ich beim Aufruf von split("\d\d\d_") eine
    Fehlermeldung wegen den Backslash? Laut Doku ist
    \d das selbe wie [0-9]



  • nicht getestet:

    Pattern regExp = Pattern.compile("\\d\\d\\d_([^-]*)-([^.]*)");
    Matcher m = regExp.matcher(str); // str ist Dein String
    if(m.find()){
      String alphanum1 = m.group(1);
      String alphanum2 = m.group(2);
    }
    


  • Parry schrieb:

    nicht getestet:

    Da fehlen die zwei Space vor und nach dem "-" als " - " so
    funktioniert es:

    Pattern.compile("\\d\\d\\d_([^-]*) - ([^.]*)");
    

    Man hätte es aber auch so lassen können und die zwei alphanumeric
    anschliessend trimmen.

    Danke für den Regexp, jetzt steig ich so langsam durch.

    Muss mal schauen ob es bei Sun ein Tut für die RegExp gibt,
    die sind echt nützlich, wenn man die beherrscht.



  • Muss mal schauen ob es bei Sun ein Tut für die RegExp gibt,
    die sind echt nützlich, wenn man die beherrscht.

    Falls es noch jemanden interessiert:
    http://java.sun.com/docs/books/tutorial/extra/regex/index.html


Anmelden zum Antworten