2015-09-07 44 views
1

我正在使用pyparsing,並試圖使用方法Skipto來實現文本中幾個可能的文字的第一次出現。用pyparsing跳到文本中的第一個可能性

想象與此類似:

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

我不能融合兩個SkipTo的,因爲它們位於不同的類,它不適合到當前系統中融合這些類。

如果我現在有類似這樣的文字:

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

它只能找到Example1發生和只是忽略另一個。 現在我的問題是我如何跳到文件中的第一個可能性,從而找到所有的出現。

回答

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 
+0

好,謝謝,我會試試看的明天,當我回來上班! – Rittel

+0

它正在工作!我將「oneOf」更改爲「MatchFirst」,因爲我想查找幾個表達式中的第一個,但其餘部分解決了我的問題。謝謝! – Rittel

相關問題