py解析组中的0或1

2024-05-11 17:31:44 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从一组令牌中获取零个或仅一个令牌?它们可以按任何顺序排列。假设这是我的代码:

def parseFunc(self, string):
    firstToken = CaselessKeyword("KeyWordOne")
    secondToken = CaselessKeyword("KeyWordTwo")
    thirdToken = CaselessKeyword("KeyWordThree")

    stmt = ZeroOrMore(firstToken | secondToken | thirdToken)
    return stmt.parseString(string)

对于zeroor或more,有一个问题,因为每个令牌都可以显示多次。 如果是可选的,它们必须按照列出的顺序排列。在

这是我目前的解决方案:

^{pr2}$

Tags: 代码selfstringreturndefstmtparsefunczeroormore
1条回答
网友
1楼 · 发布于 2024-05-11 17:31:44

Optional与“零或一”相同:

stmt = Optional(firstToken | secondToken | thirdToken)

还有一种新的乘法形式,类似于regex中的{min,max}

^{pr2}$

编辑:

对于任意顺序,请使用Each(使用运算符定义):

stmt = (Optional(firstToken) & Optional(secondToken) & Optional(thirdToken))

相关问题 更多 >