是否有用于搜索和修改树结构的正则表达式等价物?我正在寻找简洁的迷你语言(如 perl 正则表达式)。
这里有一个例子可以阐明我在寻找什么。
<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”开头的所有节点,如果子树至少有 2 个其他兄弟节点,则将其替换为“b”等。
对于字符串,其中唯一的维度是跨越字符串的长度,我们可以使用正则表达式执行上述许多操作(或它们的一维等价物)。我想知道是否有树木的等价物。 (而不是单个正则表达式,您可能需要编写一组转换规则,但这没关系)。
我想知道是否有一些简单的迷你语言(不是 regex 本身,而是可以通过库等与 regex 一样访问的东西)。执行这些操作?最好是作为 python 库。
最佳答案
斯坦福大学的 TSurgeon 和 Tregex 能够做到这一点。您可以从 http://nlp.stanford.edu/software/tregex.shtml 下载库。
关于java - 树结构的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875100/