Warum lässt dieser Regexausdruck: "\\d{1}|\\d{2}[.]\\d{1}|\\d{2}[.]\\d{2}|\\d{4}" in Java die Eingabe: "0 0 0" zu? 0.0.0 geht nicht, wie gewollt, aber 0 0 0?
habe beim Testen gemerkt, dass bei mir 0 0 0 zugelassen wird, obwohl mein entworfener Ausdruck dies ja eigentlich nicht zulassen sollte... Warum wird es trz durchgeführt?
3 Antworten
![](https://images.gutefrage.net/media/user/Palladin007/1513698609789_nmmslarge__202_0_980_980_9cc06b25d33a80bd7adc221dae634818.jpg?v=1513698610000)
Was ist dein Ziel? Das ergibt irgendwie so gar keinen Sinn :D
Du lässt vier verschiedene Patterns prüfen und das Erste ist eine einzelne Ziffer.
Also egal ob "0 0 0" oder "0.0.0", es werden immer drei 0en als einzelne Matches gefunden.
Abgesehen davon:
\d{1} = \d
[.] = \.
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Dein OR ist falsch, Regex weiß nicht wo es enden soll. Regex denkt du meinst „Eine Ziffer ODER zwei Ziffern + ein Punkt + eine Ziffer ODER zwei Ziffern + ein Punkt + zwei Ziffern ODER vier Ziffern“. Um das zu beheben kannst einfach mit Klammern dan Bereich umschließen, auf den sich das jeweilige OR bezieht. Oder du verzichtest hier gänzlich auf das OR und machst gebrauch von {1,2}.
Und falls du einen Punkt überprüfen willst solltest du ihn einfach so hinschreiben \. anstatt [.]
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Dein OR ist falsch. Regex weiß nicht von wo bis wo es geht. Mach klammern rum.
(\d{1}|\d{2})\.(\d{1}|\d{2})\.(\d{2}|\d{4})
Wobei du es auch einfach ganz weglassen kannst.
\d{1,2}\.\d{1,2}\.(\d{2}|\d{4})
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
![](https://images.gutefrage.net/media/user/Wissididom/1444750625_nmmslarge.jpg?v=1444750625000)
Versuche mal
\d{2}\.\d{1}|\d{2}\.\d{2}|\d{4}|\d{1}
Ich hoffe, ich habe das Problem soweit richtig verstanden.
Wenn das das Problem löst, dann war das Problem, dass die Matches wohl von links nach rechts durchgegangen wurde und da die einzelne Zahl da dann immer am Anfang stand wurde die auch immer gematched
![](https://images.gutefrage.net/media/user/Wissididom/1444750625_nmmslarge.jpg?v=1444750625000)
genau, aber warum wird dan 0 0 0 akzeptiert? Das sollte ja deshalb nicht passieren