2010-11-26 6 views
1

Zum Beispiel umfasst für den Text Mon 01/01/2010 01:00:00 some other text followed, ich mag nur das Datum Segment übereinstimmen, so dass ich den folgenden PHP-Code,Regulärer Ausdruck: nicht etwas eingeklammerten Teilmuster in abgestimmten Gruppen

$text = 'Mon 01/01/2010 01:00:00 some other text followed'; 
$pattern = '/(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(0-9\/)+?.*/'; 
preg_match($pattern, $text, $matches); 
$date = $matches[2]; 

Ist es möglich, das erste geklammerte Untermuster (Tag des Wochensegments in diesem Beispiel) nicht in übereinstimmende Gruppen aufzunehmen, sodass wir das Datumssegment mit $matches[1] anstelle von $matches[2] erhalten können? Ich erinnere mich, dass wir das tun konnten, indem wir etwas im Regex-Muster setzten, aber ich konnte die Antwort nicht googlen.

Antwort

4

Mit (?:...) anstelle von (...) wird eine nicht gruppierende Übereinstimmung erstellt.

$pattern = '/(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s(0-9\/)+?.*/';