несовпадение, но вывод в результ... preg_match_all

RadLine

Новичок
несовпадение, но вывод в результ... preg_match_all

PHP:
$x='private [duster]private [лена]private [фывdfa]private [vana]';
preg_match_all("/private \[([a-zA-Z0-9_\s]{3,15}|[а-яА-Я0-9_\s]{3,15})\]*/", $x, $z);
foreach($z[1] as $tmp){echo $tmp;echo'<br>';}

/*
Результат выполнения:
duster
лена
[COLOR=red]фыв[/COLOR] 
vana
*/
что я упустил?
p.s. строчка выделенная красным не должна выводиться в результат массива, т.к. не подходит по условию(её полный вид 'фывdfa')
 

Kotyara

Новичок
Re: несовпадение, но вывод в результ... preg_match_all

совпадение-то есть... и функция отрабатывает правильно, косяк в регулярке
а ты посмотри что в $z[0] , там видно откуда ноги растут...
 

RadLine

Новичок
:/ &%..

сформулирую получше вопрос: почему регулярка в [3] случ. опускает "\]" и возвращает совпадение?
 

Kotyara

Новичок
Автор оригинала: RadLine
:/ &%..

сформулирую получше вопрос: почему регулярка в [3] случ. опускает "\]" и возвращает совпадение?
а какую роль у тебя в регулярке играет "*"?
 

FB3

Новичок
Мегазнак, насколько я понял, для того, чтобы искать либо русские, либо английские слова. Типа смешанные не нужны. А вот про * правильный вопрос был, насколько я вижу.
 

dimagolov

Новичок
надо не слова только из русских букв требовать, а только из русских, после которых нету английских без разделителя
 
Сверху