正则表达式小记

动机:

  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')]

  

  

      

原文地址:https://www.cnblogs.com/followlqc/p/11081480.html