• 正则表达式 re模块


    正则表达式: 一种使用表达式的方式对字符串进行匹配的语法规则 

     可以在如下网站中测试正则表达式

    在线正则表达式测试 (oschina.net)

    1.常见的正则项匹配符号

    ①元字符:

    .          匹配除换⾏符以外的任意字符

    \w       匹配字⺟或数字或下划线

    \s        匹配任意的空⽩符

    \d        匹配数字

    \n        匹配⼀个换⾏符

    \t         匹配⼀个制表符

    ^         匹配字符串的开始

    $         匹配字符串的结尾

    \W       匹配⾮字⺟或数字或下划线

    \D        匹配⾮数字

    \S        匹配⾮空⽩符

    a|b       匹配字符a或字符b

    ()         匹配括号内的表达式,也表示⼀个组

    [...]       匹配字符组中的字符

    [^...]      匹配除了字符组中字符的所有字符

    ②量词:控制前面的元字符出现的次数

    *          重复零次或更多次

    +         重复⼀次或更多次

    ?         重复零次或⼀次

    {n}       重复n次

    {n,}      重复n次或更多次

    {n,m}   重复n到m次

     ③贪婪匹配和惰性匹配

    .*           贪婪匹配(尽可能多)

    .*?         惰性匹配(尽可能少)

    2.使用语法 

    1. import re
    2. # findall: 匹配字符串中所有的符合正则的内容
    3. lst = re.findall(r"\d+", "我的电话号是:10086, 我女朋友的电话是:10010")
    4. print(lst) #['10086', '10010']
    5. # finditer: 匹配字符串中所有的内容[返回的是迭代器], 从迭代器中拿到内容需要.group()
    6. it = re.finditer(r"\d+", "我的电话号是:10086, 我女朋友的电话是:10010")
    7. for i in it:
    8. print(i.group())
    9. # search, 找到一个结果就返回, 返回的结果是match对象. 拿数据需要.group()
    10. s = re.search(r"\d+", "我的电话号是:10086, 我女朋友的电话是:10010")
    11. print(s.group())
    12. # match是从头开始匹配
    13. s = re.match(r"\d+", "10086, 我女朋友的电话是:10010")
    14. print(s.group())

     预加载正则表达式(快捷使用)

    1. # 预加载正则表达式
    2. obj = re.compile(r"\d+") #效果同上面
    3. ret = obj.finditer("我的电话号是:10086, 我女朋友的电话是:10010")
    4. for it in ret:
    5. print(it.group())
    6. ret = obj.findall("呵呵哒, 我就不信你不换我1000000000")
    7. print(ret)
    8. s = """
    9. 郭麒麟
    10. 宋铁
    11. 大聪明
    12. 范思哲
    13. 胡说八道
    14. """
    15. # (?P<分组名字>正则) 可以单独从正则匹配的内容中进一步提取内容
    16. obj = re.compile(r"
      (?P.*?)
      "
      , re.S) # re.S: 让.能匹配换行符
    17. result = obj.finditer(s)
    18. for it in result:
    19. print(it.group("wahaha"))
    20. print(it.group("id"))

     

  • 相关阅读:
    【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter16-脚本控制
    python的queue的一些方法记录
    CVPR 2022:Generalized Few-shot Semantic Segmentation 解读
    java计算机毕业设计林家餐厅自助点餐管理系统源码+系统+mysql数据库+lw文档
    Allegro分Partition操作指导
    从JDK8升级到JDK17
    栈和队列2——队列的实现
    linux驱动开发.之spi测试工具spidev_test源码(一)
    车企内部文件传输数据效率太慢?那是没找到合适的文件传输工具
    Jmeter插件PerfMon Metrics Collector安装使用及报错解决
  • 原文地址:https://blog.csdn.net/weixin_62848630/article/details/134168567