Regex Problem
Ralf
- programmiertechnik
Hi,
ich muss erkennen, ob in einem Text ein Textteil der Form '****201*-****' (* = beliebige Ziffer)steht.
Mein Regex:
preg_match('/[0-9]{4}[201][0-9][-][0-9]{4}/', $text, $matches);
Bei $text = 'blabal 07122013-7781 blabal';
sollte in $matches[0] doch eigentlich '07122013-7781' stehen. Es steht aber nur '122013-7781' drin.
Was mache ich falsch?
Gruß
Ralf
Hi,
ich muss erkennen, ob in einem Text ein Textteil der Form '****201*-****' (* = beliebige Ziffer)steht.
Mein Regex:
preg_match('/[0-9]{4}[201][0-9][-][0-9]{4}/', $text, $matches);Bei $text = 'blabal 07122013-7781 blabal';
sollte in $matches[0] doch eigentlich '07122013-7781' stehen. Es steht aber nur '122013-7781' drin.Was mache ich falsch?
Du willst 201 matchen, suchst an der Stelle aber nur nach einer(!) der Ziffern 2, 0 oder 1.
MfG ChrisB
Hi,
Du willst 201 matchen, suchst an der Stelle aber nur nach einer(!) der Ziffern 2, 0 oder 1.
Und wie suche ich nach '****201*-****' (* = beliebige Ziffer)?
Hi,
Du willst 201 matchen, suchst an der Stelle aber nur nach einer(!) der Ziffern 2, 0 oder 1.
Und wie suche ich nach '****201*-****' (* = beliebige Ziffer)?
Warum fragst du noch mal nach den beliebigen Ziffern, die hast du doch schon?
Du weißt, was die eckigen Klammern bedeuten? Warum benutzt du sie dann an der Stelle?
MfG ChrisB
Hallo,
preg_match('/[0-9]{4}[201][0-9][-][0-9]{4}/', $text, $matches);
^^^^^
Der reguläre Ausdruck
/201/
findet die Zeichenkette »201«. Genau drei Zeichen, genau diese Zeichen, genau diese Reihenfolge.
Der reguläre Ausdruck
/[201]/
findet genau EIN Zeichen, das entweder »2«, »0« oder »1« ist.
[…] ist eine sogenannte Character Class (Zeichenklasse), eine Menge von *einzelnen* Zeichen, die *alternativ* vorkommen können.
Wird dir der Unterschied klar und was du eigentlich suchst?
Mathias