码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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博客

  • 相关阅读:
    买房大事记
    【iOS】—— 深入了解GCD
    Linux安装Hadoop超详细教程
    无锡哲讯与喜德金属联手推动“百城千园行”“十园千企”无锡站活动,数字化赋能活动动
    数据库与MPP数仓(二十五):Vertica的优化/运维高频使用语句
    乐观锁和悲观锁全面总结及实际应用介绍
    定向模糊测试aflgo中的能量调度
    Java带APP的智慧工地项目源码
    Linux 了解DHCP服务及如何操作
    vulnhub——The Planets: Earth
  • 原文地址:https://blog.csdn.net/qq_29707567/article/details/133271885
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号