首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用匹配规则进行解析,只要结果不是特定字符串[pest.rs]

如何使用匹配规则进行解析,只要结果不是特定字符串[pest.rs]
EN

Stack Overflow用户
提问于 2022-06-08 18:30:46
回答 1查看 54关注 0票数 1

当我试图用pest.rs语法定义一个“标识符”时,我遇到了一个问题,其中一个标识符不是在一组保留关键字中的字符串。

我想使用一个任意的匹配规则(比方说它的ASCII_ALPHA_LOWER+),这样就可以一个接一个地使用任意数目的小写字母,但是我希望只有当结果是而不是等于一个特定的字符串(例如,"abc")时,规则才能匹配。

在regex中,这可以通过使用负查找和锚字符( ^(?!abc$)[a-z]+ )相结合来实现--因为锚点在与abc匹配时就停止了负查找,这意味着像abcd 这样的字符串将被匹配。

但是,pest没有这些锚字符,可以达到的最佳效果如下:

代码语言:javascript
复制
identifier { 
    !("abc") ~ ASCII_ALPHA_LOWER+ 
}

但是,由于没有锚字符,任何以abc开头的字符串都将被匹配,而不管其馀字符如何,这不是最优的,因为我只希望规则在与保留关键字完全匹配的情况下失败。

有谁知道我怎样才能实现与使用pest语法的正则表达式相同的功能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-09 00:17:33

使用一个可选的修饰符,而不是消极的展望:

代码语言:javascript
复制
ident = { "abc"? ~ ASCII_ALPHA_LOWER+}

这要求,如果标识符以关键字开头,则必须在其后面有一些内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72550588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档