Рег.выражения - жадность квантификаторов

Comandante

Новичок
Рег.выражения - жадность квантификаторов

Столкнулся с проблемой, упрощенно код такой:
PHP:
$cntx="расходомеры, газоанализаторы, ... расходомеры и др.";
preg_match("!расходомеры.*и др!U",$cntx,$mass);
print_r($mass) дает
Array
(
[0] => расходомеры, газоанализаторы, ... расходомеры и др
)
хотя по идее модификатор "U" инвертирует жадность "*" и в результате должно получиться "расходомеры и др". В чем подвох?
PHP:
preg_match("!расходомеры.*?и др!",$cntx,$mass);
также не дает ожидаемого результата.
 

Nicholas

Новичок
регулярка отрабатывает АБСОЛЮТНО правильно. Находит первое вхождение слова расходомеры и первое вхождение и др.

ЗЫ Правильный ответ:
PHP:
preg_match("! расходомеры.*?и др!",$cntx,$mass);
 

x-yuri

Новичок
ты неправильно понимаешь, что такое жадность ;-)
в таком варианте
PHP:
$cntx="расходомеры расходомеры и др. и др."; 
preg_match("/расходомеры.*и др/",$cntx,$mass);
ты полчаешь
'расходомеры расходомеры и др. и др.'
а в таком
PHP:
$cntx="расходомеры расходомеры и др. и др."; 
preg_match("/расходомеры.*?и др/",$cntx,$mass);
'расходомеры расходомеры и др.'
 
Сверху