Wie bekomme ich es hin, dass hier \\.(....|..) die Punkte jeweils nur zahlen sind [\\.(....|..)0-9] geht nicht... (Java) Regx, matches?
Hi, ich habe die .matches Methode.
Ich möchte schauen, ob mein String ein Punkt ist und danach 2 oder 4 Zeichen folgen und diese Zahlen müssen alle jeweils zwischen 0-9 liegen. Beispielsweise wäre
.12 möglich oder .2929 oder .99, aber halt nicht .999, da ich ja auf 2 oder 4 begrenzt habe, die Begrenzung geht auch ohne dieses [0-9], aber dann werde auch buchstaben akzeptiert, was ich nicht will.
variable.matches("[\\.(....|..)0-9]") geht leider nicht, hat jemand die Lösung?
1 Antwort
variable.matches("\\.(\\d{2}|\\d{4})$");
Sollte funktionieren.
Diese Website kann ich dir übrigens zum Erstellen und Testen von Regular Expressions empfehlen: https://regex101.com
Das funktioniert nicht, da ich den Regex für dich schon bereinigt habe. Die Backslashes würden von Java ansonsten auch interpretiert werden. Wenn du den Regex auf der Seite testen willst, musst du das verwenden:
\.(\d{2}|\d{4})$
Das \d ist der Shortcut für eine Ziffer von 0 bis 9. {2} bedeutet einfach, dass der Ausdruck davor zweimal vorkommen muss. Bei {4} entsprechend viermal.
Damit lassen sich auch Minimum und Maximum definieren. Zum Beispiel:
- {4..} mindestens viermal
- {..4} maximal 4 Mal (0-mal auch möglich)
- {1..4} 1 bis 4 Mal
Auf der Seite kannst du auch den Code Generator nutzen, damit der Regex automatisch bereinigt wird.
Eben, weil Java den Backslash interpretiert. Damit wird \d als ein Backslash-Code erkannt, welcher aber nicht existiert. An dieser Stelle bist du erst auf der Ebene von Strings und hat noch nichts mit Regex zu tun.
Der zweite Backslash hebt dann den anderen Backslash auf. Im Endeffekt ist es dann für die Regex-Methode nur noch ein Backslash, also \d.
Die seite funktioniert bei mir nicht, ich schreib z. B. \\.(....|..) und mache dann drunter .3333 und es gibt keine matches. Aber danke dir. Was bewirkt jedoch das d{2] und d{4}, sowie das dollar?