gpt4 book ai didi

regex - 如何使用 Perl 正则表达式解析表示递归数据结构的字符串?

转载 作者:行者123 更新时间:2023-12-01 14:02:59 25 4
gpt4 key购买 nike

我想知道 Perl 中有哪些方法可以遍历递归结构(例如二叉树)以字符串形式给出。

更具体地说:

这里是一棵树,为简单起见是解析树,而且非常短。想象它是没有花哨的制表符和空格的字符串。

tree(Sentence, 
tree(NounPhrase,
leaf(Determiner, "a"),
leaf(Noun, "man", "singular")
),
tree(VerbPhrase,
leaf(Verb, "walks", "present", "3rd person")
)
)

现在我想访问根的两个直接子节点,但我不能简单地用正则表达式来做到这一点。

m/tree \( \w+ , (group1) , (group2) \) /x

我想正确捕获group1和group2,即 group1 和 group2 有偶数个左括号和右括号。

这似乎是一项相当复杂的任务,想知道常见/最简单的解决方案是什么?

例如,prolog 会很容易消化这个任务。

最佳答案

我会尝试创建 2 个函数:sub tree{}sub leaf{}

它们中的每一个都会返回一个带标签的术语作为字符串,例如 leaf(Determiner, "a")会返回 <Determiner>a</Determiner>

然后只需执行您要处理的文件即可。输出将是一个类似 DOM 的结构,您可以使用任何 DOM 解析器(如 XML::DOM )对其进行解析。例如

关于regex - 如何使用 Perl 正则表达式解析表示递归数据结构的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com