Существуют ли регулярные выражения для поиска и изменения древовидных структур? Я ищу краткие мини-языки (например, Perl Regex).
Вот пример, который может прояснить то, что я ищу.
<root>
<node name="1">
subtrees ....
</node>
<node name="2">
<node name="2.1">
data
</node>
other subtrees...
</node>
</root>
Операция, которая была бы возможна в вышеприведенном дереве, это «переместить поддерево в узле 2.1 в
поддерево в узле 1. "Результат операции может выглядеть примерно так ...
<root>
<node name="1">
subtrees ....
<node name="2.1">
data
</node>
</node>
<node name="2">
other subtrees...
</node>
</root>
Операции поиска и замены, такие как поиск всех узлов, имеющих не менее 2 дочерних элементов, поиск всех узлов, данные которых начинаются с «a», и замена их на «b», если поддеревья имеют как минимум 2 других родных элемента и т. Д. И т. Д.
Для строк, где единственное измерение находится по всей длине строки, мы можем выполнить многие из вышеуказанных операций (или их одномерные эквиваленты) с помощью регулярных выражений. Интересно, есть ли эквиваленты для деревьев? (вместо одного регулярного выражения вам может понадобиться написать набор правил преобразования, но это нормально).
Я хотел бы знать, есть ли какой-нибудь простой мини-язык (не regex per.se, а такой же доступный, как regex через библиотеки и т. Д.). выполнить эти операции? Предпочтительно, как библиотека питона.