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

问题描述 投票:0回答:1

我正在为我们的dsl编写要在pest中使用的PEG文件。我需要解析一个键值,其中值是三引号内的一个正则表达式。我无法为此编写有害生物规则。

值为"""Some regex here"""

我定义的规则是:

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

而且我需要

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

我尝试过

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

这不起作用且PEG不正确

regex = {TQ ~ ANY* ~ TQ}

它贪婪地消耗了所有令牌,甚至在末尾使用了三引号

规则应在正则表达式内解析正则表达式,例如

 """^\w+\s+\d\d\d\d\-\d\d\-\d\d\s+\d\d\:\d\d\:\d\d\s+AB_02V\s+\d+\s+.*"""
parsing rust
1个回答
2
投票

有害生物具有内置规则ANY以匹配任何Unicode字符,并且其否定谓词成功后不消耗任何输入。然后定义非常简单:

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

re = { (!tq ~ ANY)* }

regex = { tq ~ re ~ tq }

如果您想更深入地学习,可以使用pest book

© www.soinside.com 2019 - 2024. All rights reserved.