【问题标题】:Extract block of text using regex python使用正则表达式 python 提取文本块
【发布时间】:2019-02-27 16:42:34
【问题描述】:

这是我的文本文件:

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 

我想提取这个块:

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

我试过这样的:

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

但它也会提取另一个以换行符开头的A0

【问题讨论】:

    标签: python


    【解决方案1】:

    请注意,在正则表达式中,* 已准备就绪。这意味着如果有其他以'A0' 开头的行,它将停在最后而不是第一个。所以你应该使用不贪心的*?。一个小组就足以摆脱最初的'A0'。它可以以:

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

    【讨论】:

    • 这很有意义。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-08-26
    • 2021-12-12
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多