Python 使用pyparsing跳转到文本中的第一种可能性

Python 使用pyparsing跳转到文本中的第一种可能性,python,pyparsing,Python,Pyparsing,我正在使用pyparsing,并试图使用Skipto方法来获取文本中首次出现的几个可能的文本 想象一下类似的情况: OneOrMore(SkipTo(...longer expression...) | SkipTo(...another long expression...)) 我不能融合这两个跳跃器,因为它们位于不同的类中,融合这些类不适合当前系统 如果我现在有一个与此类似的文本: ...a lot of stuff... Example2 ...more stuff... Example

我正在使用pyparsing,并试图使用Skipto方法来获取文本中首次出现的几个可能的文本

想象一下类似的情况:

OneOrMore(SkipTo(...longer expression...) | SkipTo(...another long expression...))
我不能融合这两个跳跃器,因为它们位于不同的类中,融合这些类不适合当前系统

如果我现在有一个与此类似的文本:

...a lot of stuff...
Example2
...more stuff...
Example1
...stuff...
它只找到
Example1
出现的情况,而忽略另一个。
现在,我的问题是如何跳到文件中的第一种可能性,从而找到所有发生的情况。

如果您仅尝试处理较大文本体中的位和段,请尝试使用searchString或scanString而不是parseString

from pyparsing import oneOf, lineno

sample = """
<<Lot of stuff>>
Example2
<<More stuff>>
Example1
<<Stuff>>"""

expr = oneOf("Example1 Example2")

for toks, start, end in expr.scanString(sample):
    print toks
    print "starts at line", lineno(start, sample)
    print "ends at line", lineno(end, sample)
    print

好的,谢谢,我明天回去工作的时候会试试的!它正在工作!我将“oneOf”改为“MatchFirst”,因为我想找到几个表达式中的第一个,但对于其他表达式,它解决了我的问题。谢谢
['Example2']
starts at line 3
ends at line 3

['Example1']
starts at line 5
ends at line 5