python - 使用正则表达式 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
我想提取这个块:
文本的第一行总是以 YN FILE 开头。我想提取所有内容,直到遇到以 A0 开头的新行。
我试过这样:
matchObjj = re.search(r'YN.*\nC0.*\nA0', data, re.DOTALL)
但它也提取了A0
换行符中的另一个开头。
解决方案
当心,在正则表达式中,*
已经很糟糕了。这意味着如果有其他以 开头的行'A0'
,它将停在最后而不是第一个。所以你应该使用 ungreedy *?
。而一组就足以摆脱最初的'A0'
. 它可以以:
matchObjj = re.search(r'(YN.*?\n)A0', data, re.DOTALL)
block = matchObjj.group(1)
推荐阅读
- php - PHP:显示 NULL 但实际上包含数据
- javascript - 验证要在 setState 中使用的变量
- javascript - 删除可视数据 - Autodesk Forge 数据可视化
- node.js - 安装 npm "which npm" 成功但 "npm -v" 失败
- javascript - ServerMiddleware 错误:意外的令牌 '&&='
- javascript - Javascript:表单提交后的 URL 重定向
- python - 如何在 pywallet 中创建 Tether (USDT) 钱包?
- typescript - 哪个版本更好以及为什么:`fn(a: AType)` 或 fn
(一:T)`? - python - 无论python中的系统日期如何,都获取当前日期
- sql - 根据SQL中的上述两行值计算每列的百分比值