Pyparsing:确定多个ORed解析器中的哪一个实际成功

时间:2014-07-16 06:32:17

标签: pyparsing

我使用的是:

parser = parser1 ^ parser2 ^ parser3

然后

result = parser.parseString(line)

是否有一个简单的内置方法来确定哪3个OR解析器成功了?

1 个答案:

答案 0 :(得分:1)

给他们结果名称:

parser = parser1("p1") ^ parser2("p2") ^ parser3("p3")

然后解析后:

if result.p1:
    # parser1 was matched
elif result.p2:
    # parser2 was matched
elif result.p3:
    # parser3 was matched
else:
    # no parser matched, or a parser matched with empty contents

另外,请考虑使用'|'如果3个解析器中没有歧义,则运算符代替'^'。 '|'将在第一场比赛后停止尝试替代方案,其中'^'将全部尝试,然后选择最长的比赛。