Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярка с вложениями 
V
    Опции темы
wil
Дата 23.9.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 28.3.2006

Репутация: нет
Всего: 4



Сломал мозг уже второй день, помогите.
Есть текст такого плана: 
Код

IF(Command1: 1){
    Текст, любые символы
    IF(Zadanie2: 4){
             Текст, любые символы
    ENDIF}
    ELSE{
          Текст, любые символы
    ENDELSE}
ENDIF} 


Надо выдирать блоки IF(Command: 4){Текст, любые символы ENDIF}ELSE{Текст, любые символы ENDELSE} начиная с самого глубокого вложения, т.е блоки IF или ELSE внутри которых нет других блоков IF

Последнее что пробовал(не работает):
Код

$pattern  = '/IF\((\w|\d)*: (\w|\d)*\)\{([^I]*.*?)ENDIF\}((.*?)ELSE\{(^[IF]*.*?)ENDELSE\})*/is';


Помогите плиз 

Это сообщение отредактировал(а) wil - 23.9.2009, 11:23
--------------------
 
PM MAIL WWW   Вверх
SamDark
Дата 23.9.2009, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 4
Всего: 38



wil, 
Регулярки тут не очень уместны. Пишите токенайзер.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
wil
Дата 23.9.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 28.3.2006

Репутация: нет
Всего: 4



SamDark, да работает уже почти, только не учитывается вложенность блоков, т.е. без ^[IF]*, с ним не работает почему-то !
--------------------
 
PM MAIL WWW   Вверх
NewDima
Дата 25.9.2009, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: -1
Всего: 12



Цитата(wil @ 23.9.2009,  18:23)
Код

    IF(Zadanie2: 4){
             Текст, любые символы
    ENDIF}
    ELSE{
          Текст, любые символы
    ENDELSE}

не в тему, конечно, но почему такой странный синтаксис?
Зачем такая избыточность?
PM ICQ   Вверх
wil
Дата 25.9.2009, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 28.3.2006

Репутация: нет
Всего: 4



Просто синтаксис для встроенных скриптов. Почему избыточный ?
--------------------
 
PM MAIL WWW   Вверх
NewDima
Дата 25.9.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: -1
Всего: 12



Код

ENDIF}
ENDELSE}

уж либо:
Код

if (condition) {
}

либо
Код

if (condition)
endif

PM ICQ   Вверх
wil
Дата 30.9.2009, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 28.3.2006

Репутация: нет
Всего: 4



Угу, сделал синтаксис:
Код

IF(Command1: 1){
    Текст, любые символы
    IF(Zadanie2: 4){
             Текст, любые символы
    }
    ELSE{
          Текст, любые символы
    }
} 


Регулярка получилась:

Код

/IF\(([^\{\}:]+): (\w|\d)*\)\{([^\{\}]+)\}([^\{\}]*ELSE\{([^\{\}]+)\}){0,1}/is

--------------------
 
PM MAIL WWW   Вверх
NewDima
Дата 30.9.2009, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: -1
Всего: 12



wil, и что, вопрос решился уже?
PM ICQ   Вверх
wil
Дата 1.10.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 28.3.2006

Репутация: нет
Всего: 4



NewDima, да, я в предыдущем посте привел работающую регулярку.
--------------------
 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0477 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.