Regex eingebettet {{passend

7

Ich muss die gesamte folgende Anweisung abgleichen:

%Vor%

Grundsätzlich, wenn es ein { gibt, muss ein entsprechendes } vorhanden sein, aber viele eingebettete { } sind innerhalb des ursprünglichen Tags. Also zum Beispiel {{match}} oder {{ma{{tch}}}} oder {{m{{a{{t}}c}}h}} .

Ich habe das gerade jetzt:

%Vor%

Das funktioniert nicht ganz.

    
thirsty93 14.05.2011, 14:57
quelle

2 Antworten

15

Die .NET-Regex-Engine ermöglicht rekursives Matching:

%Vor%     
Tim Pietzcker 14.05.2011, 15:11
quelle
4

Ich schlage vor, einen einfachen Parser / Tokenizer dafür zu schreiben.

Grundsätzlich durchlaufen Sie alle Zeichen und beginnen Instanzen von { und } zu zählen - inkrementieren für { und dekrementieren für } . Zeichnen Sie den Index jedes ersten { und den Index jedes letzten } auf und Sie erhalten die Indizes für Ihre eingebetteten Ausdrücke.

An dieser Stelle können Sie substring verwenden, um diese zu erhalten und sie aus der ursprünglichen Zeichenfolge zu entfernen / ersetzen.

Siehe diese Fragen und Antworten für warum RegEx ist nicht geeignet.

    
Oded 14.05.2011 15:08
quelle

Tags und Links