使用正则表达式python提取文本块

时间:2019-02-27 08:23:59

标签: python

这是我的文本文件:

YN FILE=“stop.x" DATE=wwepweijfp Life=spfewff FUIL=“keener” CREATED_BY=“xxxxx” 
DY FD=4344334 HSH=OIHF 
DC A_GN=EFEFOK 
DF EFIIEFNFNEE
DF NIFENPEFEF
DF AO EIJHEPFN A0 pjwdwdwd
DF C0 STATICVECTOR 
ZZ ---------------< Fields >--------------------- 
DF A0 VERN FMGL ROJF AO
GS MOB40 99 
GA 4 Y 3 F 00H00M F 
G2 “eiberbnier       " EE 
C0 D56916E65D4500574124B15AD3226746A7F70AD7A3936A550BDB87FC077E9F4C7D36C4E9BFFA7545C4AE8C4173
A0 VDS1000170 34486EF018B1BF89 955486C529989CBC 89BCE463 919BC6E9 C927D0 09BA5356CD7CFFBD 
A0 VDS1000171 1951420D5909073A FF7B6A08E2BDC4AC E9593876 50ABACB9 894A6E 57AA4A23DE6414E0 

我想提取此块:

enter image description here

文本的第一行始终以YN FILE开头。 我想提取所有内容,直到遇到以A0开头的新行。

我已经尝试过:

matchObjj = re.search(r'YN.*\nC0.*\nA0', data, re.DOTALL)

但是它还会提取换行符开头的其他A0

1 个答案:

答案 0 :(得分:1)

当心,在正则表达式中,*已经存在。这意味着,如果还有其他以'A0'开头的行,它将在最后而不是在第一行停止。因此,您应该使用不满意的*?。一个小组就足以摆脱最初的'A0'。它可以结尾为:

matchObjj = re.search(r'(YN.*?\n)A0', data, re.DOTALL)
block = matchObjj.group(1)