Ich schreibe einen Code-Formatierer und ich brauche etwas Hilfe. Ich muss die Codeblöcke finden und ich möchte reguläre Ausdrücke verwenden. Der Code, den ich zu Format benötigen sieht grundsätzlich wie folgt:RegEx, um verschachtelte Code-Blöcke zu finden
KEYWORD name {
word
word
...
}
Ich bin in der Lage, die Blöcke zu finden, die mit {und endet mit} mit diesem Ausdruck starten:
[{](.*?)[}]
Aber ich weiß nicht, wie man den Teil zum Ausdruck hinzufügt. Beides sind benutzerdefinierte Zeichenfolgen, die ein beliebiges Zeichen außer ;
, {
und }
enthalten können.
Ein anderes Problem ist, dass meine Code-Blöcke geschachtelt werden können. Ich weiß nicht, wie ich diese Funktion hinzufügen soll.
Ich weiß nicht, ob Ihre Code-Blöcke verschachtelt werden können, aber wenn ja, wird Ihre Regex nicht funktionieren. – Jordi
Oh! Sie haben Recht! Das habe ich noch nicht getestet. Aber sie müssen verschachtelt sein ... –
Sobald das Verschachteln (in beliebige Tiefen) involviert ist, werden Regexes schwierig zu verwenden. Streng genommen sind verschachtelte Konstrukte nicht regulär und daher für die Zuordnung zu regulären Ausdrücken ungeeignet. Einige moderne Regex-Varianten (z. B. PCRE, Perl, .NET) ermöglichen rekursives Matching, jedoch gehört Java nicht dazu. Sie müssen wahrscheinlich einen Parser für diesen Job erstellen/verwenden. –