2009-09-08 4 views
0

Voici un court exemple regex:problème Regex - matchs manquants

preg_match_all('~(\s+|/)(\d{2})?\s*–\s*(\d{2})?$~u', 'i love regex 00–/ 03–08', $matches); 
print_r($matches); 

Le regex correspond seulement '03 -08' , mais mon intention correspondant était '00 - » aussi bien. Quel est le problème? Quelqu'un pourrait-il expliquer?

Répondre

2

La partie à la fin:

-\s*(\d{2})?$~u 

signifie que vous ne pouvez avoir des espaces et/ou éventuellement deux chiffres entre votre match et la fin de la chaîne. Cela signifie que 00- ne peut pas correspondre car il y a d'autres choses entre lui et la fin de la chaîne.

Si vous supprimez le $, cela devrait fonctionner comme prévu.

+0

D'où vient ce $ ????? Merci, Adam. Je ne peux pas croire que j'ai fait une erreur aussi stupide. Ce $ était assis là et je ne l'ai tout simplement pas remarqué! – Ree