gpt4 book ai didi

parsing - 害虫中的 PEG 解析器匹配三重引号内的正则表达式,尝试在 https ://pest. rs/

转载 作者:行者123 更新时间:2023-11-29 08:13:11 25 4
gpt4 key购买 nike

我正在编写一个用于 pest 的 PEG 文件对于我们的 dsl。我需要解析一个键值,其中值是三重引号内的正则表达式。我无法为它编写害虫规则。

值为 """Some regex here"""

我定义的规则是:

TQ = {"\"\"\""}

我需要

regex = {TQ ~ Anything but not TQ ~ TQ}

我试过

regex = {TQ ~(!TQ)* ~ TQ}

这是行不通的,而且不是正确的 PEG

regex = {TQ ~ ANY* ~ TQ}

最后贪婪地消耗所有 token 甚至三重引号

规则应该在三重引号内解析正则表达式

 """^\w+\s+\d\d\d\d\-\d\d\-\d\d\s+\d\d\:\d\d\:\d\d\s+AB_02V\s+\d+\s+.*"""

最佳答案

您的定义非常接近正确,但需要注意一点:Pest 否定谓词在成功时不会消耗任何输入。因此,如果您只告诉它不要匹配某些内容,解析器可能会卡住并且无法取得进展。

它还需要知道要匹配什么。在这种情况下,那将是任何事情。 Pest 有一个内置规则 ANY 正是为了这个目的:

tq = { "\"\"\"" }

re = { (!tq ~ ANY)* }

regex = { tq ~ re ~ tq }

如果您想更深入地研究,可以使用 pest book .

关于parsing - 害虫中的 PEG 解析器匹配三重引号内的正则表达式,尝试在 https ://pest. rs/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58298200/

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