Regulären Ausdruck in Java abbilden

kossy

Bekanntes Mitglied
Hallo !

Ich habe momentan eine Aufgabe zu lösen, bei der es um die Verwendung von Regulären Ausdrücken geht. ich weiß, dass das nicht unbedingt ein spezielles Java Thema ist (wenn es hier gar nicht herpassen sollte, dann bitte wieder löschen oder verschieben).

Ein Zeichenkette (String) wäre für mich nach dem folgenden Muster gültig:
  • [Großer Buchstabe (ist erforderlich)][Zahl (ist erforderlich)][Zahl (ist erforderlich)][Punkt ist Optional][Zahl (ist Optional)][Zahl (ist Optional)]
Die Bedingung ist nur, dass wenn ein Punkt gesetzt wird, dann auch mindestens 1 Zahl dannach folgen muss,

ich habe jetzt den folgenden Java Code geschrieben, der allerdings nicht wie gewünscht funktioniert:

Java:
public void test(final String meinString){
       final String regel = "^[A-Z]\\d{2}(\\.\\d){0,2}$";
       final Pattern pattern = Pattern.compile(regel);
       final Matcher matcher = pattern.matcher(meinString);

       if(!matcher.matches()){
             System.out.println("Fehler, die Zeichenkette" + meinString + "ist ungueltig!");
       }
}

Diese Java Strings wären erlaubt:
  • D99
  • M00.0
  • M01.6
  • J98.3
  • T05.0
  • M96.81
  • D68.20

Diese Java Strings wären nicht erlaubt:
  • 9D.0
  • 6G
  • 7H.
  • M96.811
  • J234.82
  • G687.1
  • GU87.11

Kann mir vielelicht jemand weiterhelfen? Was habe ich in dem regulären Ausdruck falsch definiert?

//Edit: Könnte bitte jemand meinen Rechtschreibfehler in der Überschrift des Posts korrigieren? Ich selbst kann dies nicht tun. Besten Dank !

Danke und Gruß
Kossy
 
Es geht sicher auch kürzer, aber versuch es mit:
Code:
        final String regel = "^[A-Z]\\d{2}(\\.\\d{1,2}){0,1}$";

Bei deinem Ausdruck, sagst du, dass dein String mit der Sequenz ".Ziffer" 0 bis 2 mal endet.
 
Also wenn man naiv deiner Aufgabenstellung folgt, dann sieht der so aus:
Java:
String regex = "^[A-Z]\\d\\d[.]?\\d?\\d?$";
Zusammengefasst:
Java:
String regex = "^[A-Z]\\d{2}[.]?\\d{0,2}$";

Gibt auch nette Regex online tools (mein Favorit hier regex101.com), dann kannst du auch das testen: HIER
 

Zurück
Oben