【发布时间】:2009-05-17 17:57:26
【问题描述】:
是否有用于搜索和修改树结构的正则表达式等价物?我正在寻找简洁的迷你语言(如 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”等。
对于唯一维度跨过字符串长度的字符串,我们可以使用正则表达式执行上述许多操作(或它们的一维等效项)。我想知道是否有树的等价物。 (而不是单个正则表达式,您可能需要编写一组转换规则,但这没关系)。
我想知道是否有一些简单的迷你语言(不是正则表达式本身,而是通过库等可以像正则表达式一样访问的东西)。执行这些操作?最好是作为python库。
【问题讨论】:
-
想一想那个东西的语法会是怎样的...... :)
-
嗯,您能更明确地说明您拥有什么以及正则表达式应该做什么吗?
-
这需要更具体 - 你是在解析 XML 还是什么?
-
你不应该称它为“常规”,因为“常规”需要“无上下文”,而树不是。
-
我同意,称其为“常规”是不正确的,但是,我与常规语言进行比较的想法是在实用性方面,我想在字符串中进行搜索和替换 - 我做正则表达式,我想在树上做同样的事情,我用..?
标签: java python c regex tree-structure