regexps

[ Z ]

Новичок
regexps

Есть такой блок:

Код:
begin
{if VAR1}
start_1
   {if VAR2}
       test_2
   {/if}
stop_1
{/if}
end
нужно регекспами вытянуть только внутренний блок, тоесть
Код:
   {if VAR2}
       test_2
   {/if}
то есть необходимо вытягивать блок в котором не встречается комбинация
"{if"

раньше делал
{if (.*?)}(.*){/if}
но он выбягивает блок первого уровня... а нужен следующий....
 

Demiurg

Guest
я бы на твоем месте находил положения всех {if ...} и {/if}, потом анализировал.

ps что пишешь ?
 

[ Z ]

Новичок
Автор оригинала: Demiurg
я бы на твоем месте находил положения всех {if ...} и {/if}, потом анализировал.

ps что пишешь ?
Так просто не получится....

Код:
{if VAR1}
 {if VAR2}
   test
 {/if}
{/if}
test
{if VAR1}
 {if VAR2}
   test
 {/if}
{/if}
для регекспа
{if (.*?)}(.*){/if}
результатом бдует:
Код:
 {if VAR2}
   test
 {/if}
{/if}
test
{if VAR1}
 {if VAR2}
   test
 {/if}

а для регекспа
{if (.*?)}(.*?){/if}
будут
Код:
 {if VAR2}
   test
и
Код:
 {if VAR2}
   test
 

Demiurg

Guest
повторяю:
я бы на твоем месте находил положения всех {if ...} и {/if}, потом анализировал.
не надо пытаться сделать всю работу одной строчкой.
 
Сверху