python 正则表达式提取字符串

1、提取字符串的场景及公式、命令

背景:目前遇到的场景主要是以某个字符串开始、某个字符串结束,提取中间部分的字符,有的时候需要开始的字符,有时不需要,大概涉及到了4种情况,场景及处理方式如下:

1.1 以某个字符开始、某个字符结束,期待的提取结果包含首末字符串

        提取公式:a = re.findall("开始字符串.*末字符串",str)

1.2 以某个字符开始、某个字符结束,期待的提取结果不包含末字符串,但包含首字符串

        提取公式:a = re.findall("开始字符串.*?(?=末字符串)",str)

        例子:提取文本中的所有时间,如图

        提取命令

        time = re.findall("202.*?(?=,)",content)  # 也就是提取以202开头的,逗号结束的,且不包括逗号的

1.3 以某个字符开始、某个字符结束,期待的提取结果不包含首字符串,但包含末字符串:

        提取公式:a = re.findall("(?<=开始字符串).*末字符串",str)

1.4 以某个字符开始、某个字符结束,期待的提取结果不包含首、末字符串:

        提取公式1:a = re.findall("(?<=开始字符串).*?(?=末字符串)",str)

        提取公式2:a = re.findall(".*开始字符串(.*)末字符串*",str)

例子:提取mocro_step的数据值,前面是固定字符micro_step=,后面是固定字符/global_step,如图:

       提取命令:

    micro_step = re.findall("(?<=micro_step=).*?(?=/global_step)", content)  # case4 方法1

    micro_step = re.findall(".*micro_step=(.*)/global_step*", content)  # case4方法2

1.5 起始字符串不固定(即从首字符串提取到固定的字符串结束),用^指定从首字符串开始

        提取公式:a = re.findall('^.*结束字符串',str)

2、特殊字符-需要转义

2.1 需要转义的特殊字符

2.2  转义符举例:提取r值也就是以字符串lr=[开头,逗号结尾之间的字符串,如图:

提取命令: learning_rate = re.findall(".*lr=\[(.*?), *", content)

提取结果:

        -1.0274676347695078e-07

3、总结一下知识点,主要涉及了这几种情况

        a、提取的字符串需要包含起始字符串--上面的1.1

        b、提取的字符串不需要包含起始字符串--上面的1.2~1.4

        c、提取到的字符串如果匹配到多个,只截取到第一个,不要后面的部分

                 解决办法:使用?

        d、提取到的字符串如果匹配到多个,要匹配到的全部的字符串

                解决办法:使用*

4、参考文章

Python正则表达式,这一篇就够了! - 知乎

python通过正则匹配指定字符开头与结束提取中间内容_python匹配字符串中间的文字-CSDN博客

Python正则表达式及常用匹配_python 正则表达式匹配_Sicc1107的博客-CSDN博客

python正则表达式--RE模块(转义r 和 \,贪婪模式与非贪婪模式) - 知乎

利用python 正则 读取txt文件中指定字符之间的数据,并保存到excel中_python txt 某两行中间的数据_洛星尘pro的博客-CSDN博客

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值