python3中的re库使用

1 基础使用

(一)

程序如下,

#==============更多关于正则表达式的信息,可以参考Python官方文档:https://docs.python.org/3/library/re.html
import re

line = "replace sdlink froms. sdlinkid = 1526093896, before = , after = 1527148286,1526469937,1542948896,1542962446,1586022115,1526200502"
pattern = r"sdlink (.*). sdlinkid = (.*), before = (.*), after = (.*)"

match = re.search(pattern, line)
if match:
    datatype = str(match.group(1))
    sdlinkid = int(match.group(2))
    before = str(match.group(3))
    after = str(match.group(4)) 

print("type:", datatype)
print("sdlinkid:", sdlinkid)
print("before:", before)
print("after:", after)

输出如下,

type: froms
sdlinkid: 1526093896
before: 
after: 1527148286,1526469937,1542948896,1542962446,1586022115,1526200502

(二)
.:表示匹配除换行符以外的任意字符。
?:表示匹配前面字符0次或者1次。例如ab*表示匹配aab
*:表示匹配前面字符0次或者多次。例如ab*表示匹配aababbabbb……
$:表示匹配以某个字符串结尾的字符串。例如abc$表示匹配以abc结尾的字符串,像abc1abc2abcdefabc等等。
\.:表示匹配.。例如a\.a表示匹配a.a
\?:表示匹配?。例如a\?a表示匹配a?a
\*:表示匹配*。例如a\*a表示匹配a*a

(三)
正则表达式在线测试

2 训练

示例1

import os 
import time 
import collections
import re 

def get_num_seq_from_log(log_file: str) -> list:
    pattern1 = r"elements_max_seq\.size\(\) = (.*)"
    pattern2 = r"str_seq = (.*)"

    res = []

    with open(file_path, "r", encoding='utf-8') as f: #打开文本
        #data = f.read() #读取文本
        lines = f.readlines()
        for line in lines:
            match = re.search(pattern1, line)
            if match: 
                ele_size = int(match.group(1))
                #print(f"ele_size = {ele_size}")
                res.append(ele_size)
            match = re.search(pattern2, line)
            if match:
                laneid_seq = str(match.group(1))
                #print(f"laneid_seq = {laneid_seq}")
                res.append(laneid_seq)
                break

        #print(f"ele_size = {ele_size}, laneid_seq = {laneid_seq}")
    return res

start_t = time.time()

dir_path = "F:\\2shuju\\82406_had2bd_log"
file_path = "F:\\2shuju\\82406_had2bd_log\\【XX】24Q1_gcj02_10108_20240412_1517_110000_XX\\CG_2024Q1CPSJJF0307_quanguodongtaimukuV1_20240307_110000_had2bd_1712908579___1712918524_oKUUNdIo.log"

ele_size, laneid_seq = get_num_seq_from_log(file_path)
print(f"ele_size = {ele_size}, laneid_seq = {laneid_seq}")

end_t = time.time()
print(f"程序成功执行,用时{(end_t - start_t) / 60.0}分钟!")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YMWM_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值