Seite 1 von 1

Mit regulärem Ausdruck Methoden auskommentieren?

Verfasst: Mittwoch 25. Juli 2007, 15:37
von KoenigGunther
Hi!
Ich suche nach einem regulären Ausdruck der mir eine Methode auskommentiert.
Die Methode soll die main-Methode einer Javadatei sein:

Ich dachte da an etwas wie:

Code: Alles auswählen

re.sub('public\s+static\s+void\s+main\(.*\)
um den Kopf zu erkennen

Code: Alles auswählen

\{(.*\{.*\}.*)*\}
um den Rumpf zu erkennen.

Das Problem scheint zu sein, da ich eine Datei einlese in der Absätze sind, diese nicht gematcht werden. Ich habs schon mit re.DOTALL versucht, aber dann matcht er zu viel. Ich dachte mit dem (.*\{.*\}.*)* könnte ich sicherstellen, dass ich, wenn ich eine öffnende geschweifte Klammer lese auch immer die schließende dazu lese.

Prinzipiell läuft das Problem auf das Merken von Klammerpaaren hinaus - kann mir da wer helfen?

Christian

Verfasst: Mittwoch 25. Juli 2007, 15:55
von HWK
Wenn die geschweiften Klammern beliebig tief geschachtelt sein dürfen, ist es mit einer Regex nicht zu lösen.
Zitat aus Mastering Regular Expressions von Jeffrey E.F. Friedl:
In fact, the problem is that you simply can't match arbitrarily
nested constructs with regular expressions. It just can't be done.
MfG
HWK

Verfasst: Freitag 27. Juli 2007, 10:58
von KoenigGunther
Danke sehr!
Auch wenn es nicht gut für mich ist :)