Регулярные выражения, как выбрать из строки

Irvin_s

Новичок
Регулярные выражения, как выбрать из строки

Есть строка "Что_угодно-1ШТ, что_угодно2- 4ШТ, что_угодно3 -1ШТ,U-NZM4/6 82240 -5ШТ, ДЛЯ ТЕХОБОРУДОВАНИЯ"
Надо чтобы создавался массив вида;
PHP:
$arr["1шт","4шт", "1шт", "5шт"]
(*ШТ) - в строке может встречаться сколько угодно раз и где угодно в начале в конце строки, если я пишу:
PHP:
eregi("[0-9]+ШТ", $search, $regs);
в массиве $arr только первое совпадение и больше ничего нет.

Я не очень силен в регулярных выражениях, плиз хелп...
 

Irvin_s

Новичок
я понял, что надо использовать preg_match_all, но с регулярным выражением к данному случаю, так и не могу разобраться((

-~{}~ 14.11.05 17:30:

Разобрался... Спасибо, за хороший мануал) Решение следующее:
PHP:
preg_match_all("*[0-9]{1,}[Ш][Т]*", $search, $regs);
for($i=0; $i<=count($regs[0]); $i++)
{echo substr($regs[0][$i],0,-2),'<br>';}
 

sakon

П..и.н..ок
ну-ну...
Паровой двигатель тоже может проиводить в движение машину...
Кстати. А если в строке написано "1Шт"?
 

zarus

Хитрожопый макак
Автор оригинала: Irvin_s
я понял, что надо использовать preg_match_all, но с регулярным выражением к данному случаю, так и не могу разобраться((

-~{}~ 14.11.05 17:30:

Разобрался... Спасибо, за хороший мануал) Решение следующее:
PHP:
preg_match_all("*[0-9]{1,}[Ш][Т]*", $search, $regs);
for($i=0; $i<=count($regs[0]); $i++)
{echo substr($regs[0][$i],0,-2),'<br>';}
PHP:
$array = array();
if (preg_match_all('/(\d+)(\s)*(ШТ)/si',$string,$found,PREG_SET_ORDER )) {
  foreach ($array as $val) {
    $array[] = $val[1].$val[2];
  }
}
 

Irvin_s

Новичок
zarus, спасибо огромное...
sakon, а издеваться совсем не обязательно, мог бы сам предложить свой вариант, чего ты не сделал :confused: Я говорил, что не очень силен в регулярных выражениях, а на самом деле сегодня мой первый опыт с ними, и то что я решил задачу сам хоть и не так элегантно как zarus, большой плюс к моей самооценке... так что нечего издеваться.

zarus, ещё раз спасибо.
 

sakon

П..и.н..ок
Irvin_s
А над тобой никто и не издевался. Если ты считаешь, что предложение внимательно прочитать мануал - издевательство, то это твои проблемы.
 

Alesto

Новичок
Есть удобная программка для генерации регулярных выражений. Мне правда она помогла только на первых порах, а потом было лень и я писал ручками...

http://www.regexbuddy.com/
 

zarus

Хитрожопый макак
Мне очень помогла программа RegEx Coach - если б не она, я бы ковырялся в регулярных выражениях еще полгода, а так изучил за пару недель до достаточного уровня - остальное придет только с опытом. А работа у меня предполагает обилие подобных задач.
 
Сверху