[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярное выражение
Rumych
Здравствуйте.
Есть строка состоящая из конструкций такого вида - {{mounted|installed} source|lamp|lighting fixture}{On top of that| to everything else|Over and above|More by token}
Как правильно составить регулярное выражение, что-бы при использовании preg_match_all() в результат попадала как конструкция с одинарными скобками {} так и с вложенными{{}}.
Пробовал так
preg_match_all('/\\{((\\{)*(\w)*(\\|)*(\s)*)*\\}/', $str, $arrClearText, PREG_SET_ORDER, 0);
но находит только одинарные скобки{}, а если так
preg_match_all('/\\{((\\{)*(\\})*(\w)*(\\|)*(\s)*)*\\}/', $str, $arrClearText, PREG_SET_ORDER, 0);
т.е. добавляю закрывающую скобку - } то сервер глючит.
Спасибо.
killer8080
так?
$text = '{{mounted|installed} source|lamp|lighting fixture}{On top of that| to everything else|Over and above|More by token}'; 
preg_match_all('#(?<=\{)[^{}]+(?=\})#', $text, $match);
echo '<pre>'.print_r($match, 1).'<pre>';
Rumych
Да, спасибо! biggrin.gif
killer8080
Цитата (Rumych @ 29.01.2013 - 14:50)
Да, спасибо!

уверен? Или может так должно быть?
$text = '{{mounted|installed} source|lamp|lighting fixture}{On top of that| to everything else|Over and above|More by token}'; 
preg_match_all('#(?<=\{|\})[^{}]+(?=\{|\})#', $text, $match);
echo '<pre>'.print_r($match, 1).'<pre>';
Rumych
Из этого варианта
$text = '{{mounted|installed} source|lamp|lighting fixture}{On top of that| to everything else|Over and above|More by token}'; 
preg_match_all('#(?<=\{)[^{}]+(?=\})#', $text, $match);
echo '<pre>'.print_r($match, 1).'<pre>';


я взял для себя основную идею.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.