使用 pyparsing 跳到文本中的第一种可能性
Skip to first possibility in text with pyparsing
我正在使用 pyparsing 并尝试使用 Skipto 方法来获取文本中几个可能的文字的第一次出现。
想象类似这样的事情:
OneOrMore(SkipTo(...longer expression...) | SkipTo(...another long expression...))
而且我无法融合这两个 SkipTo,因为它们位于不同的 类 并且它不适合当前系统来融合那些 类。
如果我现在有类似这样的文字:
...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
打印
['Example2']
starts at line 3
ends at line 3
['Example1']
starts at line 5
ends at line 5
我正在使用 pyparsing 并尝试使用 Skipto 方法来获取文本中几个可能的文字的第一次出现。
想象类似这样的事情:
OneOrMore(SkipTo(...longer expression...) | SkipTo(...another long expression...))
而且我无法融合这两个 SkipTo,因为它们位于不同的 类 并且它不适合当前系统来融合那些 类。
如果我现在有类似这样的文字:
...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
打印
['Example2']
starts at line 3
ends at line 3
['Example1']
starts at line 5
ends at line 5