Python 3.x PyParsing或运算符,在找到匹配项之前展开

Python 3.x PyParsing或运算符,在找到匹配项之前展开,python-3.x,pyparsing,Python 3.x,Pyparsing,在英语中,我希望“abae”匹配“如果ab或aba后跟e有效”。想知道如何使用库做同样的事情。i、 e.以尝试所有选项的方式定义“或”匹配的规则 理解管道操作符首先指示匹配,我并不奇怪上面的示例失败。我考虑过插入符号,但也有一些情况,比如上面例子中的“abe”,插入符号不能满足我的需要。你能详细说明为什么combined=(one^two)+“e”对“abe”不起作用吗?你也可以试试combined=oneOf(“aba”)+“e”。对不起,保罗。安倍是一个可怕而错误的例子。但我相信您可以想象一

在英语中,我希望“abae”匹配“如果ab或aba后跟e有效”。想知道如何使用库做同样的事情。i、 e.以尝试所有选项的方式定义“或”匹配的规则


理解管道操作符首先指示匹配,我并不奇怪上面的示例失败。我考虑过插入符号,但也有一些情况,比如上面例子中的“abe”,插入符号不能满足我的需要。

你能详细说明为什么
combined=(one^two)+“e”
对“abe”不起作用吗?你也可以试试
combined=oneOf(“aba”)+“e”
。对不起,保罗。安倍是一个可怕而错误的例子。但我相信您可以想象一组更复杂的规则,其中包含多个深度的or语句,其中插入符号或管道将排除某些结果。我正在阅读其中一篇,谢谢你的回复。节日快乐。你能详细解释一下为什么
combined=(一^2)+“e”
对“abe”不起作用吗?你也可以试试
combined=oneOf(“aba”)+“e”
。对不起,保罗。安倍是一个可怕而错误的例子。但我相信您可以想象一组更复杂的规则,其中包含多个深度的or语句,其中插入符号或管道将排除某些结果。我正在阅读其中一篇,谢谢你的回复。节日快乐。
import pyparsing as pp

one = pp.Literal("ab").setName("one")
two = pp.Literal("aba").setName("two")
combined = (one | two) + "e"
combined.setName("combined")

print(combined.parseString("abae", parseAll=True))