Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вложенные скобки
 
 автор: Anatoly_ua   (14.07.2008 в 19:00)   письмо автору
 
 

Возможно ли средствами regexp сделать примерно так.

Есть выражение, например:
1(2(3)4)5(6)
можно ли получить массив вида:
array = (
   1
   2(3)4
   5
   6
)

т.е. "порезать" только по скобкам первого уровня, а "внутренние" оставить без изменения?

   
 
 автор: BinLaden   (14.07.2008 в 22:09)   письмо автору
 
   для: Anatoly_ua   (14.07.2008 в 19:00)
 

Средставами механизма регулярных выражений - не могу сказать. Могу предложить альтернативу:

<?php
$exp 
'1(2(3)4)5(6)';

$nesting_level 0;
$arr = array('');
$k 0;

for(
$i 0$i strlen($exp); $i++)
{
    if( 
$exp[$i] == '(' && $nesting_level++ == )
    {
        
$arr[++$k] = '';
        continue;
    }
    else if( 
$exp[$i] == ')' && --$nesting_level == )
    {
        if( 
$i strlen($exp) ) $arr[++$k] = '';
        continue;    
    }

    
$arr[$k] .= $exp[$i];
}

print_r($arr);
?>

   
 
 автор: Anatoly_ua   (14.07.2008 в 23:12)   письмо автору
 
   для: BinLaden   (14.07.2008 в 22:09)
 

Спасибо!
В принципе, можно и без регулярных выражений, главное, чтобы работало :)

С регулярными -- интересно чисто теоретически

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования