Поиск тела функции(регулярные выражения)

Ladari

Новичок
Здравствуйте, помогите, пожалуйста, с регулярными выражениями.
У меня есть файл со следующим содержимым:
/*
* GenerateTocXML.java
* Copyright © 1999, 2003 Slava Pestov
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

package doclet;

import com.sun.javadoc.*;
import com.sun.tools.doclets.standard.Standard;

import java.io.*;
import java.util.Arrays;

public class GenerateTocXML
{
public static final String OUT = "toc.xml";
public static final String HEADER = "<?xml version='1.0'?>\n<TOC>\n"
+ "<ENTRY HREF='overview-summary.html'><TITLE>jEdit API Reference</TITLE>";
public static final String FOOTER = "</ENTRY></TOC>\n";

public static boolean start(RootDoc root)
{
if (!Standard.start(root))
{
return false;
}
try
{
FileWriter out = new FileWriter(Standard.htmlDoclet.configuration().destDirName + OUT);
out.write(HEADER);

PackageDoc[] packages = root.specifiedPackages();
for(int i = 0; i < packages.length; ++i)
{
processPackage(out,packages);
}

out.write(FOOTER);
out.close();

return true;
}
catch(IOException e)
{
e.printStackTrace();
return false;
}
}

public static int optionLength(String option)
{
return Standard.optionLength(option);
}

public static boolean validOptions(String[][] options, DocErrorReporter reporter)
{
return Standard.validOptions(options,reporter);
}

public static LanguageVersion languageVersion()
{
return Standard.languageVersion();
}

private static void processPackage(Writer out, PackageDoc pkg)
throws IOException
{
out.write("<ENTRY HREF='");
String pkgPath = pkg.name().replace('.','/') + "/";
out.write(pkgPath);
out.write("package-summary.html'><TITLE>");
out.write(pkg.name());
out.write("</TITLE>\n");

ClassDoc[] classes = pkg.allClasses();
String[] classNames = new String[classes.length];
for(int i = 0; i < classes.length; i++)
{
classNames = classes.name();
}
Arrays.sort(classNames);

for(int i = 0; i < classes.length; i++)
{
processClass(out,pkgPath,classNames);
}

out.write("</ENTRY>");
}

private static void processClass(Writer out, String pkgPath, String clazz)
throws IOException
{
out.write("<ENTRY HREF='");
out.write(pkgPath);
out.write(clazz);
out.write(".html'><TITLE>");
out.write(clazz);
out.write("</TITLE>\n");
out.write("</ENTRY>");
}
}
В этом файле мне нужно, чтобы компьютер нашел содержимое функций.
Например, для функции
public static int optionLength(String option)
{
return Standard.optionLength(option);
}
получить
return Standard.optionLength(option);

И так для каждой функции в файле.
Я просто не могу понять, как нужно написать выражение, чтобы нашло закрывающую скобку функции.
 

HEm

Сетевой бобер
1. Никому не интересно читать такие портянки
2. где твоя регулярка?
 

Вурдалак

Продвинутый новичок
Введи переменную-счётчик уровня вложенности фигурных скобок.
 

HEm

Сетевой бобер
Вурдалак
в большинстве случаев сработает, а ну как внутри строки в функции попадется фигурная скобка? все к чертовой матери взорвется
 

Вурдалак

Продвинутый новичок
Ввести предварительно preg_split() с паттерном строкового литерала и PREG_SPLIT_DELIM_CAPTURE.
 

Ladari

Новичок
Вурдалак
в большинстве случаев сработает, а ну как внутри строки в функции попадется фигурная скобка? все к чертовой матери взорвется
Я это понимаю и поэтому не знаю, как задать правильно закрывающий тег.(((
 

baev

‹°°¬•
Команда форума
И где тут «программирование на PHP»?

Переношу.
 
Сверху