首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pyparsing: MatchFirst、Or和oneOf之间的区别

Pyparsing: MatchFirst、Or和oneOf之间的区别
EN

Stack Overflow用户
提问于 2014-06-23 11:28:51
回答 2查看 1.5K关注 0票数 4

在Pyparsing中,MatchFirst、Or和oneOf有什么不同

当字符串中有共享字符时,如

单词,措辞,单词

Or('word','wording','words')

MatchFirst('word','wording','words')

oneOf('word','wording','words')

EN

Stack Overflow用户

发布于 2017-03-06 21:31:22

oneOf对被理解为空格分隔字符串的str进行操作,可以简单地定义为

代码语言:javascript
运行
复制
oneOf = lambda xs: Or(Literal(x) for x in xs.split(" "))

Or在expressions ParseElement实例上运行。因此,您可以将oneOf看作是Or的特化,或者将Or看作是oneOf的泛化。

您可以将oneOf('foo bar')编写为Literal('foo') ^ Literal('bar'),但不能使用oneOf编写每个Or表达式。

除了冲突解决方法之外,MatchFirstOr相同- Or产生最长的匹配,而MatchFirst按定义顺序返回第一个匹配。

所以

代码语言:javascript
运行
复制
expr = Literal('bar') ^ Words(alphanums)
expr.parseString("barstool").asList() == ["barstool"]    

代码语言:javascript
运行
复制
expr = Literal('bar') | Words(alphanums)
expr.parseString("barstool").asList() == ["bar"]
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24358037

复制
相关文章

相似问题

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