zoukankan      html  css  js  c++  java
  • 正则表达式

    作用:

       表达对字符串数据的 匹配 过滤 提取的表达式(字符串)

    概念:

       用事先定义好的特定字符,或这些特定字符的组合,来对字符串进行匹配筛选  

    特点:

       通用性很强,适用于很多编程语言

       语法功能强大

    re模块:

       是操作正则表达式的模块

    # 导入re模块
        import re
    
        # 使用match方法进行匹配操作
        result = re.match(正则表达式,要匹配的字符串)
    
        # 如果上一步匹配到数据的话,可以使用group方法来提取数据
        result.group()
    用法
    import re
    
    # 正则表达式前面全部都加上r 没毛病
    result = re.match(r"itcast", "itcast.cn")
    
    result.group()
    print(result.group())
    
    输出:itcast
    示例

    匹配单个字符

       .  匹配任意一个字符 除了   可以通过r.S模式让 . 匹配  .==数据.

    re.match(r"python.org", "python
    org", re.S).group()

       [] 匹配[]中列举的字符   [-]表示范围  [0-9]  , [^0-9]表示取反

       d 匹配数字 即0-9

       D 匹配非数字 即不是数字

       s 匹配空白 即 空格、tab键等等

       S 匹配非空白

       w 匹配非特殊字符 即 a-z 、A-Z、 0-9、 _、汉字 python3中可以匹配汉字

    re.match(r"python.orgw", "python.org౯").group() # py3默认为unicode模式 可以匹配汉字
    

       W 匹配特殊字符  即非字母、非数字、非汉字

    #coding=utf-8
    
    import re
    
    ret = re.match(".","M")
    print(ret.group())
    
    ret = re.match("t.o","too")
    print(ret.group())
    
    ret = re.match("t.o","two")
    print(ret.group())
    运行结果:
    
    M
    too
    two
    示例 .

    匹配开头和结尾

       ^匹配字符串开头

       $匹配字符串结尾

       [^指定字符]: 表示除了指定字符都匹配

    量词

       {m,n} 匹配 至少m次 至多n次   {1,} {0,}

       {m} 匹配 m次

       * 匹配任意次

       + 匹配至少一次

       ? 匹配0或者1次

    匹配分组

       目的:提取部分数据

       匿名分组

         创建 (正则)

         获取.group(分组编号)

           0分组存储整体结果

           用户分组从1开始    

         引用 编号

       命名分组

         创建(?P<分组名>正则)

         获取.group(分组名称)

         引用(?P=name)

       | (a|b|c) 匹配|左右任意一个表达式

    函数

       match(正则,数据)->匹配对象 从头开始匹配

       search(正则,数据)->匹配对象 从头开始搜索 直到数据搜索完成

       findall (正则,数据)->列表 查找所有与正则表达式匹配的数据 以列表形式输出

       sub (正则,替换数据,数据,次数)->替换后的数据

       split (正则,数据)->切割后的列表

    贪婪与懒惰(非贪婪)

       默认贪婪 尽可能多

       前提 满足整体的匹配结果

    r字符 

       自动对数据的进行转义

       不添加r时  

    html = """   """
    import re
    print(re.findall(r"https://.+?.(?:jpg|png)", html))
    *==*
  • 相关阅读:
    python深浅拷贝
    pyinstaller打包py文件为exe方法
    python学习笔记3-关于文件的复制、重命名、移动、删除操作
    BeautifulSoup4 print() 输出中文乱码解决方法
    进程和线程的开启效率
    python3 使用pymysql
    python3 __file__
    Flask Template ( 模板学习)
    响应对象
    nginx 以及 uwsgi 的配置
  • 原文地址:https://www.cnblogs.com/White-black/p/10009719.html
Copyright © 2011-2022 走看看