python3 正则匹配文本段多行多个字段

一个好用的在线正则匹配网站
python3 正则匹配文本段多行多个字段_第1张图片
https://regex101.com/

# coding=utf8
import re
log=u"""业务类型:购买
机房名称:中国大连
购买时长:1个月
+基础价格=65.元
+带宽价格=(购买带宽值(5MB)-赠送带宽值(5MB))*带宽单价(4.元/月)=.元/月
+防御价格=(购买防御值(2G)-赠送防御值(2G))*防御单价(7.元/月)=.元/月
+IP价格=(购买IP数(1个)-赠送IP数(1个))*IP单价(6.元/月)=.元/月
+电源价格=.元/月
月价格=65.元
订单价格=月价格(65.元)*购买月份(1个月)*托管台数(1台)=65.元
订单总价=订单价格(65.元)*代理商折扣(1.)=65.元
"""

regex =u"""业务类型:购买
机房名称:(.*?)
购买时长:(.*?)个月
\+基础价格=(.*?)元
\+带宽价格=\(购买带宽值\((.*?)MB\)-赠送带宽值\((.*?)MB\)\)\*带宽单价\((.*?)元/月\)=(.*?)元/月
\+防御价格=\(购买防御值\((.*?)G\)-赠送防御值\((.*?)G\)\)\*防御单价\((.*?)元/月\)=(.*?)元/月
\+IP价格=\(购买IP数\((.*?)个*\)-赠送IP数\((.*?)个*\)\)\*IP单价\((.*?)元/月\)=(.*?)元/月
\+电源价格=(.*?)元/月
月价格=(.*?)元
订单.*=月价格\((.*?)元\)\*购买月份\((.*?)\)\*托管台数\((.*?)台*\)|\*\w*\((.*?)\)=(\d*\w?)"""
matches = re.finditer(regex, log, re.M|re.S)

for matchNum, match in enumerate(matches, start=1):
    
   # print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
    
    for groupNum in range(0, len(match.groups())):
        groupNum = groupNum + 1
        if match.group(groupNum):
         print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))


你可能感兴趣的:(python)