Gibt es reguläre Ausdrücke für das Suchen und Ändern von Baumstrukturen? Präzise Mini-Sprachen (wie Perl Regex) sind, was ich suche.Regex für Baumstrukturen?
Hier ist ein Beispiel, das klarstellen könnte, was ich suche.
<root>
<node name="1">
subtrees ....
</node>
<node name="2">
<node name="2.1">
data
</node>
other subtrees...
</node>
</root>
Eine Operation, die auf dem obigen Baum möglich wäre, ist „move Teilbaum am Knoten 2.1 in der Teilbaum an dem Knoten 1.“ Das Ergebnis der Operation könnte so etwas wie aussehen ..
<root>
<node name="1">
subtrees ....
<node name="2.1">
data
</node>
</node>
<node name="2">
other subtrees...
</node>
</root>
Suchen und Ersetzen-Operationen wie alle Knoten mit atleast 2 Kinder finden, alle Knoten finden, deren Daten beginnt mit „a“ und ersetzen Sie es mit „b“, wenn die Unterbäume müssen mindestens 2 andere Geschwister usw. unterstützt werden.
Für Zeichenfolgen, deren einzige Dimension sich über die Länge der Zeichenfolge erstreckt, können viele der obigen Operationen (oder ihre 1D-Entsprechungen) mit regulären Ausdrücken ausgeführt werden. Ich frage mich, ob es Äquivalente für Bäume gibt. (Statt einer einzelnen Regex müssen Sie möglicherweise eine Reihe von Transformationsregeln schreiben, aber das ist in Ordnung).
Ich würde gerne wissen, ob es eine einfache Mini-Sprache (nicht Regex per.se, aber etwas, das so zugänglich ist wie Regex über Bibliotheken, etc ..). um diese Operationen durchzuführen? Vorzugsweise als Python-Bibliothek.
Denken darüber nach, wie die Syntax dieser Sache sein könnte ... :) –
Mmh, können Sie expliziter über das, was Sie haben und was die Regex tun sollte? – akappa
Dies muss genauer sein - analysieren Sie XML oder was? –