Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > REGEXP: группировка с символами


Автор: Canarat 28.11.2008, 14:52
Господа, или у меня помутнение рассудка - или я действительно не понимаю регулярные выражения. Собственно, вот код:
Код

<pre>
<?php
$str="['i']['hate']['regularexpressing']";

// вариант 1, необходимый
preg_match_all("#(\['(\w*?)'\])*#",$str,$mt);
print_r($mt);

// вариант 2, бесполезный
preg_match_all("#('(\w*?)')*#",$str,$mt);
print_r($mt);

?>


И запустив его на своей машине, вы увидите, что нужный мне вариант выхватывает только последнюю группу, игнорируя остальные. А вариант без квадратных скобок захватывает все нужные вхождения. По подозрению здесь дело в двух подряд идущих символах в регулярном выражении, но как решить эту проблему - не имею понятия. И проблема ли это вообще?

Автор: Валерия 28.11.2008, 15:44
Код

preg_match_all("#\['(\w*?)'\]#",$str,$mt);
print_r($mt);

Автор: Canarat 28.11.2008, 15:47
Это часть составного выражения, поэтому такой подход мне не подходит. Я специально указал в таком виде, т.к. цель стоит именно так.

Автор: Валерия 28.11.2008, 17:55
preg_match_all("#(?:\['(\w*?)'\])+?#",$str,$mt);
print_r($mt);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)