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

    动机:

      1、文本处理成为计算机常见的工作之一。

      2、对文本内容的搜索、定位、提取是逻辑比较复杂的工作

      3、为了快捷方便的解决上诉问题,产生了正则表达式技术。

    定义:

      文本的高级匹配模式,提供搜索,替换等功能。其本质是由一系列字符和特殊符号构成的字符串,这个字符串既正则表达式。

    目标:应用

      1、熟练掌握正则表达式符号

      2、知道什么是正则表达式,如何

      3、能够读懂正则表达式,编写见到的正则匹配

      4、会使用re模块操作正则表达式

    正则表达式特点:

      1、方便文本处理

      2、支持语言众多

      3、使用灵活,变化多样

    数据的分类:

      1、结构化数据:

        特点:有固定的格式,如HTML,xml,json

      2、非结构化的工具:

        示例:图片,音频,视频,这类数据一半存储为二进制

          以wb方式写入文件中

    re模块使用流程

      1、写法1

        r_list=re.findall('正则',‘字符串’,re.S)

      2、写法2

        1、创建编译对象

          p = re.compile('正则',re.S)

        2、进行字符串匹配

          r_list = p.findall(html)

      3、常用的方法

        1、match(s):字符串开头第一个,返回对象

        2、search(s):从开始往后找,匹配第一个,返回对象

        3、group()、从match和search中返回对象中取值

        4、findall()、返回全部匹配,返回一个列表

      4、元字符

        .  :匹配任意一个字符,不包括

        d:匹配1个数字

        s:空白字符

        S:非空白字符#[sS]*匹配所有的字符

        [] :包含 [] 内容 #A[BCD]E  --> ABE  ACE  或者ADE

        w:普通字符

        W:特殊字符

        

        *:0次或多次

        +:一次或多次

        ?:0次或一次

        

        {m}:m次

        {m,n}:m-->n次,AB[1,3]--->ABC   ABBC  ABBBC

      5、贪婪模式和非贪婪模式

        1、贪婪模式匹配

          (.* ) 点星,在整个表达式匹配成功的前提下,尽可能多的去匹配

        2、非贪婪模式

          (.*?),在整个表达式匹配成功的前提下,尽可能少的去匹配   

    import re
    
    with open('./hei.html', 'r', encoding='utf-8') as f:
        file = f.read()
        p = re.compile('<script>(.*)</script>', re.S) #使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将“
    ”当做一个普通的字符加入到这个字符串中,在整体中进行匹配
        r_list = p.findall(file)
        print(r_list)
    

      

     正则表达式分组

       

    import re
    #说明:先按照整体匹配出来,然后再匹配()中的内容
    #如果有2个或者多个(),则以元组的方式去显示
    
    s='A B C D'
    p1=re.compile('w+s+w+')
    print(p1.findall(s))
    
    p2=re.compile('(w+)s+w+')
    print(p2.findall(s))
    
    p3=re.compile('(w+)s+(w+)')
    print(p3.findall(s))
    
    #w代表普通字符 s空白字符 +一次或多次
    #第一步['AB','CD']
    #第二步[('A','B'),('C','D')]
    

      

    运行结果:
    
    ['A B', 'C D']
    ['A', 'C']
    [('A', 'B'), ('C', 'D')]
    

      

      

          

  • 相关阅读:
    鼠标滑动带动画下拉展开的滑动门代码
    很靓很大气的简约红色CSS菜单代码
    用Cookie来保存菜单当前位置代码
    单击单选按钮切换对应的菜单代码
    仿微软中国的滑动门导航菜单代码
    C#创建SQLServer的存储过程
    通过应用程序域AppDomain加载和卸载程序集(转载)
    多线程学习笔记一(转载)
    C#实现Treeview节点"正在载入..."效果
    JavaScript 学习笔记之函数理解二
  • 原文地址:https://www.cnblogs.com/followlqc/p/11081480.html
Copyright © 2011-2022 走看看