Wie bekomme ich es hin, dass hier \\.(....|..) die Punkte jeweils nur zahlen sind [\\.(....|..)0-9] geht nicht... (Java) Regx, matches?

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

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung

aisdqw8 
Beitragsersteller
 06.11.2021, 15:09

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?

0
Lezurex  06.11.2021, 15:13
@aisdqw8

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.

0
aisdqw8 
Beitragsersteller
 06.11.2021, 15:15
@Lezurex

Danke dir, aber warum tust DU einen Zeilenende dazu, also dieses $

0
Lezurex  06.11.2021, 15:18
@aisdqw8

Weil dann zum Beispiel .12345 oder .123 auch gültig wäre, aber das willst du ja nicht.

0
aisdqw8 
Beitragsersteller
 06.11.2021, 15:26
@Lezurex

Danke, also klappen tut alles, aber warum macht man zwei \\d und nicht \d, kenne es von Java so, dass man eigentlich ein \ und dann d verwendet.

0
Lezurex  06.11.2021, 15:29
@aisdqw8

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.

1