¿Hay equivalentes de expresiones regulares para buscar y modificar estructuras de árbol? Los mini-idiomas concisos (como perl regex) son lo que estoy buscando.Regex para estructuras de árboles?
Aquí hay un ejemplo que podría aclarar lo que estoy buscando.
<root>
<node name="1">
subtrees ....
</node>
<node name="2">
<node name="2.1">
data
</node>
other subtrees...
</node>
</root>
Una operación que sería posible en el árbol de arriba es "mover subárbol en el nodo 2.1 en el subárbol en el nodo 1." El resultado de la operación podría ser algo como ..
<root>
<node name="1">
subtrees ....
<node name="2.1">
data
</node>
</node>
<node name="2">
other subtrees...
</node>
</root>
Buscar y reemplazar operaciones como encontrar todos los nodos con al menos 2 hijos, encontrar todos los nodos cuyos datos comienza con "a" y sustituirla por "b" si el los subárboles tienen al menos 2 otros hermanos, etc. deben ser compatibles.
Para las cadenas, donde la única dimensión se encuentra a lo largo de la cadena, podemos hacer muchas de las operaciones anteriores (o sus equivalentes 1D) usando expresiones regulares. Me pregunto si hay equivalentes para los árboles. (En lugar de una sola expresión regular, es posible que deba escribir un conjunto de reglas de transformación, pero eso está bien).
Me gustaría saber si hay algún mini lenguaje simple (no regex per.se, pero algo que es tan accesible como regex a través de bibliotecas, etc.). para realizar estas operaciones? Preferiblemente, como una biblioteca de Python.
Pensando en cómo podría ser la sintaxis de esa cosa ... :) –
Mmh, ¿puede ser más explícito sobre lo que tiene y qué debe hacer la expresión regular? – akappa
Esto tiene que ser más específico: ¿está analizando XML o qué? –