[регулярные выражения] вычисление подстроки

  • Автор темы doppelganger
  • Дата начала

doppelganger

Guest
[регулярные выражения] вычисление подстроки

Уважаемые специалисты по регэкспам, объясните неспециалисту — как штатными средствами решается дилемма с вычленением
подстрок типа
begin
любые данные
begin целевая строка end
end

Причем уровень вложения begin/end может быть сколь угодно большим. То есть надо вытащить минимальную подстроку между begin и end, в которой нет begin (или end). Как выяснилось, стандарт не подразумевает шаблоны с исключением какой-то подстроки. На перле есть штатное решение —

while (<>) {
if (/BEGIN PATTERN/ .. /END PATTERN/) {
# line falls between BEGIN and END in the
# text, inclusive.
} }

Но php не поддерживает оператор диапазона (..)

Как быть?
 

antonio

Moderator
Команда форума
Так, вопрос первый. Для чего?
Вопрос второй что между begin и end это критично, поскольку если ты собираешься использовать эту конструкцию для языковых построений, то надо исключать случаи строк, например like this:
begin
str="begin foo end";
end
 

doppelganger

Guest
Originally posted by antonio
Так, вопрос первый. Для чего?
Для мини-языка шаблонов.

Originally posted by antonio

Вопрос второй что между begin и end это критично, поскольку если ты собираешься использовать эту конструкцию для языковых построений, то надо исключать случаи строк, например like this:
begin
str="begin foo end";
end
Между begin и end (синтаксис, конечно, другой, эти обозначения я ввел для простоты) может быть любой текст, html код, или переменные. Но конструкций типа begin и end быть не должно. Хотя, конечно, для защиты от дурака хорошо бы проверять на непротиворечивость.
 

antonio

Moderator
Команда форума
а может тогда взять smarty: http://smarty.php.net и не изобретать велосипеда?
 
Сверху