2009-09-08 4 views
0

Вот краткий пример регулярного выражения:Regex проблема - отсутствие спички

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

Регулярное выражение соответствует только '03 -08' , но мое намерение было соответствие '00 -»а. В чем проблема? Кто-нибудь может объяснить?

ответ

2

Часть в конце:

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

означает, что вы можете иметь только пробелы и/или, возможно, две цифры между вашим матчем и в конце строки. Это означает, что 00- не может совпадать, так как между ним и концом строки есть другие вещи.

Если вы удалите $, он должен работать так, как вы планируете.

+0

Откуда взялись эти деньги? Спасибо, Адам. Я не могу поверить, что совершил такую ​​глупую ошибку. Этот доллар сидел там, и я просто этого не замечал! – Ree