Регулярка по поиску первого вхождения

Royal Flash

-=MaestrO=-
Необходимо регулярным выражением выкусить весь код функции f2 из файла. Файл примерно таков:

PHP:
function f1()
  {
  if ($b =$c)
    {
    }
  }

function f2()
  {
  if ($b =$c)
    {
    }
  }

function f3()
  {
  if ($b =$c)
    {
    }
  }
Регулярка, приведенная ниже
PHP:
preg_match('!(function f2\(.+  \})!s', $file_content, $match);
Вырезает все, начиная c function f2 и до конца файла с функциями...
А вот как бы написать регулярку, которая вырезала бы все, начиная с function f2 до двух пробелов и квадратной скобки, которые встречаются первый раз?
 

fixxxer

К.О.
Партнер клуба
Подскажите, пожалуйста, куда обращаться с законодательным предложением, предусматривающим расстрел за gnu style-отступы?
 

Royal Flash

-=MaestrO=-
Выключи жадный поиск
Спасибо, попробую.

Подскажите, пожалуйста, куда обращаться с законодательным предложением, предусматривающим расстрел за gnu style-отступы?
Да не нужно никуда обращаться :) Главное, что мне понятно и удобно :) Я же ведь понимаю другой синтаксис, когда мне нужно, и уверен, что те, кто разбираются с моим кодом - без особых проблем поймут и такой синтаксис. А вообще - это наследие старого доброго Basic :)

Тут созрела еще одна идейка, как найти окончание функции: можно ли в preg_match записать условие в виде подсчета открытых скобок "{" и остановиться, когда, будет найдено то же кол-во закрытых "}"? Или такую реализацию можно воплотить только при построчном чтении?
 

Absinthe

жожо
А зачем тут регулярки? Тут хватит цикла по token_get_all и некоторого количества условий.
 
Сверху