[RegEx] teil des Pattern optional?

ZeroCCC

wasn das?
ID: 46810
L
10 Mai 2006
1.728
130
Hi,

hab grade ein problem und war eigentlich der Meinung das es recht einfach zu lösen wäre, aber dann irgendwie doch nicht.

Ohne lange worte, der String schaut so aus "68405" oder so "68405 W112510" und von intresse ist nur die erste Zahl.

Und beim schreiben ist mir auch grade die Lösung eingefallen. :ugly: Aber eins interessiert mich noch. Das optional hab ich jetzt einfach durch "(?:|optionaler teil)" erreicht, ist dass so die normale Form oder geht das auch anders?

PHP:
~^(?P<lieferschein_id>[0-9]{5})(?:| W[-0-9]{4,8})$~
 
Normalerweise kommt das Fragezeichen nach der Gruppierung die optional ist.. das ?: in den Klammern steht nur da, damit die entsprechende Gruppierung nicht im Ergebnis zurückgegeben wird.

PHP:
~^(?P<lieferschein_id>[0-9]{5})(?: W[-0-9]{4,8})?$~
?

Edit: hatte dann gemerkt, dass du ein |... hattest... imo ist oberes besser.

^^
 
Normalerweise kommt das Fragezeichen nach der Gruppierung die optional ist.. das ?: in den Klammern steht nur da, damit die entsprechende Gruppierung nicht im Ergebnis zurückgegeben wird.

PHP:
~^(?P<lieferschein_id>[0-9]{5})(?: W[-0-9]{4,8})?$~
?

Edit: hatte dann gemerkt, dass du ein |... hattest... imo ist oberes besser.

^^

Irgendwoher kommt mir das ? hinter der Gruppe sehr bekannt vor. :wall: Danke... und das mit ?: ist klar, hab ich genommen weil ich den Teil nicht brauchte. Die funktionalität versteckte sich in dem |.

Nur so am Rande:

[0-9] kann man doch viel einfacher durch \d ausdrücken.

Janöö kann man sich jetzt drüber streiten. Ich empfinde den [...] Syntax angenehmer zu lesen und man erreicht damit auch ein einheitlicheren Still. Bei \d \w \s höhrts ja schon bei solchn sachen wie [A-Z] auf. Ich verwends aber zum teil drotzdem, \s oder \S auf jedenfall und wenns mal wirklich nötig sein sollte auch nen \w (das aber sehr selten).
 
Zuletzt bearbeitet von einem Moderator: