frankx: preg_match - 08 oder 09 statt 8 oder 9

Beitrag lesen

Ahoi,

Hi,

»» $pattern='/[0-9]{2}.200[8|9]/';

Soll wirklich nach der 200 eine 8, eine 9 oder ein Pipe-Zeichen stehen dürfen?

Nein (;-).

»» $pattern='/[0-9]{2}.20[08|09]/';

nach der 20 darf ein 0, eine 8, ein Pipe oder eine 9 kommen.

s.o.

»» Warum wird die "9" beim zweiten Beispiel abgeschnitten?

Weil Du eine Zeichenklasse verwendest, diese matcht genau ein Zeichen.

(?:08|09) entspricht wohl in etwa dem, was Du willst.
Wobei 0(?:8|9) bzw 0[89] effizienter sind, weil weniger Backtracking stattfinden muß.

Ja, es kommt aber noch 2010 dazu, also 20(?:08|09|10) - das Fragezeichen heißt, dass das eins der folgenden Vorkommen muss? 20(09|10) würde nicht gehen?

Dank und Gruß,

frankx