Regular Expressions Knobelaufgabe
Überprüfung einer Artikelnummer mit Hilfe von Regular Expressions
Hallo zusammen,
ich bräuchte dringend einmal Hilfe bzgl. Regular Expressions.
Und zwar soll ein String auf Richtigkeit geprüft werden.
---
Stringbeispiele: audi123, halter001B, db 2032B, hein022wab, bmw 12345ABC
---
Folgende Rahmenbedingungen:
1.) Der String darf nur die Zeichen A-Z, a-z und 0,9 und das Leerzeichen enthalten.
2.) Die maximale Länge des Strings darf 14 Zeichen nicht überschreiten.
3.) Der String muss mit mindestens 2 Buchstaben (s.o.) anfangen und danach dürfen maximal 4 weitere Buchstaben folgen. Also minimal 2 Buchstaben und maximal 6 Buchstaben. Das Auffüllen mit Leerzeichen bis zur 5.ten Stelle ist erlaubt. (Zum Beispiel "db<leer><leer>2032B"
4.) Nach den Buchstaben müssen mindesten 3 Zahlen (zum Beispiel 001) folgen, maximal dürfen es 5 sein.
5.) Nach den Zahlen dürfen Buchstaben folgen, ist aber nicht zwingend. Die maximale Buchstabenanzahl beträgt hier also von 0 bis 3.
Wer kann mir hieraus einen Regexp-Ausdruck entwickeln, damit ich den String auf Richtigkeit überprüfen kann?
Vielen Vielen Dank schon einmal im Voraus!
Gruß
Markus
Hallo zusammen,
ich bräuchte dringend einmal Hilfe bzgl. Regular Expressions.
Und zwar soll ein String auf Richtigkeit geprüft werden.
---
Stringbeispiele: audi123, halter001B, db 2032B, hein022wab, bmw 12345ABC
---
Folgende Rahmenbedingungen:
1.) Der String darf nur die Zeichen A-Z, a-z und 0,9 und das Leerzeichen enthalten.
2.) Die maximale Länge des Strings darf 14 Zeichen nicht überschreiten.
3.) Der String muss mit mindestens 2 Buchstaben (s.o.) anfangen und danach dürfen maximal 4 weitere Buchstaben folgen. Also minimal 2 Buchstaben und maximal 6 Buchstaben. Das Auffüllen mit Leerzeichen bis zur 5.ten Stelle ist erlaubt. (Zum Beispiel "db<leer><leer>2032B"
4.) Nach den Buchstaben müssen mindesten 3 Zahlen (zum Beispiel 001) folgen, maximal dürfen es 5 sein.
5.) Nach den Zahlen dürfen Buchstaben folgen, ist aber nicht zwingend. Die maximale Buchstabenanzahl beträgt hier also von 0 bis 3.
Wer kann mir hieraus einen Regexp-Ausdruck entwickeln, damit ich den String auf Richtigkeit überprüfen kann?
Vielen Vielen Dank schon einmal im Voraus!
Gruß
Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 33905
Url: https://administrator.de/contentid/33905
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
11 Kommentare
Neuester Kommentar
hallo,
so nach viertelstündiger anspornphase und buchlesens hab ichs (das denke ich zumindest) hinbekommen:
^[a-zA-Z]{2,6}[\s]{0,3}[\d]{3,5}[a-zA-Z]{0,3}$
ich denke das dürfte es sein
ohh das muss ich dazusagen das sind jetzt perl regex!!
mfg godlike P
so nach viertelstündiger anspornphase und buchlesens hab ichs (das denke ich zumindest) hinbekommen:
^[a-zA-Z]{2,6}[\s]{0,3}[\d]{3,5}[a-zA-Z]{0,3}$
ich denke das dürfte es sein
ohh das muss ich dazusagen das sind jetzt perl regex!!
mfg godlike P
Hm...so weit war ich gestern auch schon.... aber was sich nicht sicherstellen lässt, ist die Bedingung mit den max. 14 Zeichen Länge.
Da habe ich beim Knobeln keinen Weg gefunden, das sicherzustellen.
^[a-zA-Z]{2,6} ....max. 6 Zeichen erlaubt,
[\s]{0,3} ......+max. 3 Leerzeichen macht 9
...[\d]{3,5} .... plus 3 bis 5 Ziffern macht 14
...[a-zA-Z]{0,3}$ ............-->und nach den 14 dürfen noch 3 kommen.... *grml*
Habe gestern an dieser Stelle abgebrochen und lieger ein paar Sudokus gemacht.
Oder wie immer diese leckeren Grillwürstchen heißen.
Gruß und danke fürs Posten
Biber
Da habe ich beim Knobeln keinen Weg gefunden, das sicherzustellen.
^[a-zA-Z]{2,6} ....max. 6 Zeichen erlaubt,
[\s]{0,3} ......+max. 3 Leerzeichen macht 9
...[\d]{3,5} .... plus 3 bis 5 Ziffern macht 14
...[a-zA-Z]{0,3}$ ............-->und nach den 14 dürfen noch 3 kommen.... *grml*
Habe gestern an dieser Stelle abgebrochen und lieger ein paar Sudokus gemacht.
Oder wie immer diese leckeren Grillwürstchen heißen.
Gruß und danke fürs Posten
Biber
[EDIT]
siehe unten
[/EDIT]
siehe unten
[/EDIT]
so aba jetzt nach langem knobeln:
^[a-zA-Z]{2}[a-zA-Z\s]{0,4}[\d]{3,5}[a-zA-Z]{0,3}$
wenns das ni is weiß ich och ni!!!!
schönen abend
godlike P
^[a-zA-Z]{2}[a-zA-Z\s]{0,4}[\d]{3,5}[a-zA-Z]{0,3}$
wenns das ni is weiß ich och ni!!!!
schönen abend
godlike P
Nö, das isses nich...
^[a-zA-Z]{2}[a-zA-Z\s]{0,4}[\d]{3,5}[a-zA-Z]{0,3}$
...denn dann könnten nach den ersten zwei Nur-Buchstabenzeichen anschließend 0-4 Zeichen mit (Buchstaben und Leerzeichen) in beliebiger Reihenfolge kommen.
Also z.B "VW TDI 001x"
^[a-zA-Z]{2}[a-zA-Z]{0-4}[\s]{0,2}[\d]{3,5}[a-zA-Z]{0,3}$
wobei leider wieder die Restriktion 14-Zeichen-maximal auf der Strecke bleibt.
Ich scheitere auch daran, dass ich keine gültige Syntax hinbekomme, die die Bedingungen
(0 bis 4 Buchstaben gefolgt von 0 bis 3 Leerzeichen) UND (alles zusammen aber max 4 Zeichen lang)
kombiniert.
Evtl ginge ^[a-zA-Z]{2}([a-zA-Z]{0-4}|[\s]{0,2})[\d]{3,5}[a-zA-Z]{0,3}$ ??
Gruß
Biber
^[a-zA-Z]{2}[a-zA-Z\s]{0,4}[\d]{3,5}[a-zA-Z]{0,3}$
...denn dann könnten nach den ersten zwei Nur-Buchstabenzeichen anschließend 0-4 Zeichen mit (Buchstaben und Leerzeichen) in beliebiger Reihenfolge kommen.
Also z.B "VW TDI 001x"
^[a-zA-Z]{2}[a-zA-Z]{0-4}[\s]{0,2}[\d]{3,5}[a-zA-Z]{0,3}$
wobei leider wieder die Restriktion 14-Zeichen-maximal auf der Strecke bleibt.
Ich scheitere auch daran, dass ich keine gültige Syntax hinbekomme, die die Bedingungen
(0 bis 4 Buchstaben gefolgt von 0 bis 3 Leerzeichen) UND (alles zusammen aber max 4 Zeichen lang)
kombiniert.
Evtl ginge ^[a-zA-Z]{2}([a-zA-Z]{0-4}|[\s]{0,2})[\d]{3,5}[a-zA-Z]{0,3}$ ??
Gruß
Biber
also mit deinem geht zb das db 2032B ni, den du berücksichtigst nicht das nur 1 leerzeichen sein darf deswegen und ohne angeben zu wollen
meins funktioniert!!!!
^[a-zA-Z]{2}[a-zA-Z\s]{0,4}[\d]{3,5}[a-zA-Z]{0,3}$
mfg godlike P
meins funktioniert!!!!
^[a-zA-Z]{2}[a-zA-Z\s]{0,4}[\d]{3,5}[a-zA-Z]{0,3}$
mfg godlike P
morsche,
also:
^[a-zA-Z]{2}
[\s]{4}|
([a-zA-Z]{2}[\s]{2}|
[a-zA-Z]{3}[\s]{1}|
[a-zA-Z]{4})
[0-9]{3,5}
[a-zA-Z]{0,3}$
^[a-zA-Z]{2}([a-zA-Z]{4}|
das ergibt als reg_ex:
^[a-zA-Z]{2}([a-zA-Z]{2}[\s]{2}|[a-zA-Z]{3}[\s]{1}|[a-zA-Z]{4}|[\s]{4})[0-9]{3,5}[a-zA-Z]{0,3}$
Bidde
mfg godlike P
also:
Bei den ersten B's MÜSSEN zwei Buchstaben stehen
^[a-zA-Z]{2}
und werden bis 4 mit
Leerzeichen aufgefüllt.
Leerzeichen aufgefüllt.
[\s]{4}|
Ergo: 2 Buchstaben 2 Leerzeichen
([a-zA-Z]{2}[\s]{2}|
3 Buchstaben 1 Leerzeichen
[a-zA-Z]{3}[\s]{1}|
4 Buchstaben 0 Leerzeichen.
[a-zA-Z]{4})
Danach folgt entweder 012 oder 1234 oder
[0-9]{3,5}
Danach folgen optional noch BUchstaben.
(mind. 0 und max 3 Buchstaben)
(mind. 0 und max 3 Buchstaben)
[a-zA-Z]{0,3}$
Die zweite Variante, die mitgeprüft
werden muss, sind 6 Buchstaben am Anfang,
wie folgt:
BBBBBB ZZZ(ZZ) (BBB) = 14 Zeichen maximal
werden muss, sind 6 Buchstaben am Anfang,
wie folgt:
BBBBBB ZZZ(ZZ) (BBB) = 14 Zeichen maximal
^[a-zA-Z]{2}([a-zA-Z]{4}|
das ergibt als reg_ex:
^[a-zA-Z]{2}([a-zA-Z]{2}[\s]{2}|[a-zA-Z]{3}[\s]{1}|[a-zA-Z]{4}|[\s]{4})[0-9]{3,5}[a-zA-Z]{0,3}$
Vielen Dank für eure tatkräftige
Unterstützung
Unterstützung
Bidde
mfg godlike P
Jepp, godlike,
das könnte es nun wirklich sein.
Allerdings würde ich diese Zeile nur dann in produktive Sourcen einbauen, wenn auch Deine gesamte Herleitung als Kommentar darüber steht.. das kann sonst nicht gewartet werden.
Anders ausgedrückt: in 3 Monaten, beim Wieder-Angucken, hat auch der Autor eine halbe Stunde nötig, um die Zeile wieder nachzuvollziehen.
Eine Urlaubsvertretung dagegen würde wahrscheinlich sofort vom Balkon springen....
Gruß
Biber
das könnte es nun wirklich sein.
Allerdings würde ich diese Zeile nur dann in produktive Sourcen einbauen, wenn auch Deine gesamte Herleitung als Kommentar darüber steht.. das kann sonst nicht gewartet werden.
Anders ausgedrückt: in 3 Monaten, beim Wieder-Angucken, hat auch der Autor eine halbe Stunde nötig, um die Zeile wieder nachzuvollziehen.
Eine Urlaubsvertretung dagegen würde wahrscheinlich sofort vom Balkon springen....
Gruß
Biber
Allerdings würde ich diese Zeile nur
dann in produktive Sourcen einbauen, wenn
auch Deine gesamte Herleitung als Kommentar
darüber steht..
dann in produktive Sourcen einbauen, wenn
auch Deine gesamte Herleitung als Kommentar
darüber steht..
wenn das gewollt is, mit der herrleitung, dann bin ich natürlich so freundlich und schreib die noch.
einfach bescheid sagen
mfg godlike P