2017-10-12 66 views
0

我必須從文本文件中提取文本。如何使用python regex提取重複性文本ifrom文本文件?

Reg.No .________ xajh SAK斯卡AJS kajk SAK Reg.No .________ 灑灑爲AA莎莎的爸爸Reg.No .________阿達德

y=re.findall(r'(?=(Reg.No.________[^Reg.No.________]*Reg.No.________))',te, flags=re.DOTALL) 

輸出應該是這樣的:

列表[0] = Reg.No .________ xajh SAK斯卡AJS kajk SAK

列表[1] = Reg.No .________赤竹爲AA莎莎爸

列表[2] = Reg.No .________ adad

+0

到目前爲止您嘗試過什麼,出了什麼問題? – CAustin

+0

y = re.findall(r'(Reg。+?)Reg',te,flags = re.DOTALL) –

+0

我試過這個,但它不能正常工作,它跳過一些模式 –

回答

0

您可以使用

Reg.+?(?=Reg|$) 

即會比賽您需要的字符串。請參閱regex demo

Same pattern,但展開acc。解開半實物原理(因此,更快):

Reg[^R]*(?:R(?!eg)[^R]*)* 

詳細

  • Reg - 一個Reg
  • .+? - 比換行符字符以外的任何字符1+,如儘可能少的
  • (?=Reg|$) - Reg子串或字符串的結尾。

請注意,爲了僅匹配Reg作爲整個單詞,您可以在它之前添加\b字邊界。

Python demo

import re 
rx = r"Reg.+?(?=Reg|$)" 
s = "Reg.No.________ xajh sak ska ajs kajk sak Reg.No.________ sasa as a a sa sa dad Reg.No.________ adad" 
print(re.findall(rx, s)) 
# => ['Reg.No.________ xajh sak ska ajs kajk sak ', 'Reg.No.________ sasa as a a sa sa dad ', 'Reg.No.________ adad'] 

注意您可能以後strip()生成的字符串。

+0

非常感謝你,你是一個拯救生命的人 –