Что не так с этим выражением PHP? - PullRequest
0 голосов
/ 23 марта 2009

Может кто-нибудь объяснить мне, почему следующее возвращает пустые массивы?

$reg = "/(\[{(false|true)};{.+};{\d}\])+/";
preg_match_all($reg,"[{false};{abcde};{10}][{true};{fghij};{10}]",$matches);
print_r($matches);

Ответы [ 2 ]

2 голосов
/ 23 марта 2009

\ d должно быть \ d + для одного

2 голосов
/ 23 марта 2009

Вы написали \d, когда должно быть \d+:

$reg = "/(\[{(false|true)};{.+};{\d+}\])+/";
preg_match_all($reg,"[{false};{abcde};{10}][{true};{fghij};{10}]",$matches);
print_r($matches);

Хотя в вашем случае это не имеет значения, я бы также избежал скобок, поскольку они являются специальными символами.

$reg = "/(\[\{(false|true)\};\{.+\};\{\d+\}\])+/";
...