regexps

  • Автор темы Автор темы [ Z ]
  • Дата начала Дата начала

[ Z ]

Новичок
regexps

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

Код:
begin
{if VAR1}
start_1
   {if VAR2}
       test_2
   {/if}
stop_1
{/if}
end

нужно регекспами вытянуть только внутренний блок, тоесть
Код:
   {if VAR2}
       test_2
   {/if}

то есть необходимо вытягивать блок в котором не встречается комбинация
"{if"

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

ps что пишешь ?
 
Автор оригинала: 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
 
повторяю:
я бы на твоем месте находил положения всех {if ...} и {/if}, потом анализировал.
не надо пытаться сделать всю работу одной строчкой.
 
Сверху