通过pyparsing跳到文本的第一个可能性

时间:2015-09-07 13:15:27

标签: python pyparsing

我正在使用pyparsing并尝试使用Skipto方法来实现文本中几个可能的文字的第一次出现。

想象一下类似的东西:

OneOrMore(SkipTo(...longer expression...) | SkipTo(...another long expression...))

我无法融合两个SkipTo,因为它们位于不同的类中,并且它不适合当前系统来融合这些类。

如果我现在有类似这样的文字:

...a lot of stuff...
Example2
...more stuff...
Example1
...stuff...

它只发现Example1出现并忽略另一个。 现在我的问题是如何跳过文件中的第一种可能性,从而找到所有出现的情况。

1 个答案:

答案 0 :(得分:1)

如果您只是想在更大的文本体内处理碎片,请尝试使用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

打印

['Example2']
starts at line 3
ends at line 3

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