Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Жадность: парсер содержимого классов
 
 автор: ween   (28.06.2008 в 16:22)   письмо автору
 
 


class A
{
   public void Method1()
   {
       // 
    }
    public void Method2()  {}
}

class B
{
   public void Method3()
   { // }
   public void Method4() {    }
}


Здравствуйте, существует строка(код написанный на языке C#), необходимо извлечь из нее все содержимое классов.
При первом прохождении должно быть получено:
public void Method1()
{
//
}
public void Method2() {}

При втором:
public void Method3()
{ // }
public void Method4() { }

Какой для этого необходимо задать регэксп?
Задаю вот так: {.*}
Результат: { public void Method1() { // } public void Method2() { } } class B { public void Method3() { // } public void Method4() { } }

Отключаю жадность: {.*?}
Результат получается до первой закрывающей фигурной скобки: { public void Method1() { // }

   
 
 автор: Эй   (30.06.2008 в 01:04)   письмо автору
 
   для: ween   (28.06.2008 в 16:22)
 

preg_match_all('~class\\s+\\w+\\s*{\\s*(.*?)\\s*}\\s*(?=class|$)~si', $text, $matches);


Вообще подобная работа не для регулярных выражений, т.к. всех особенностей синтаксиса языка в 1 выражении учесть невозможно.

Лучше разобрать строку на лексемы и обрабатывать конечным автоматом:

preg_match_all('~\\w+|::|//|\\\\\\\\|\\|\\||&&|<=|>=|==|\\s+|[,.+\\-*/\\\\=(){}\\[\\]\'"|&#<>;]~', $text, $matches);


^^
неполный пример выражения

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования