Python高级——多线程_08_正则表达式

cpu密集型程序:主要

 

正则表达式

作用:对数据的匹配/过滤

特点:强大,通用

所有的正则加上r字符一定没毛病

使用:

import re

match()函数作用:从头开始匹配,失败则返回

search()函数作用:从头匹配到尾,成功返回对象,失败往后搜索,最终没有匹配返回空

匹配结果对象 = re.match(r"正则表达式",数据) 

匹配结果对象 = re.search(r"正则表达式",数据) 

search

输出结果 :结果对象.group()   

没有成功:成功:返回结果对象    失败:往后搜索,最终没有匹配返回空

 

match

输出结果 :结果对象.group()    

没有成功:成功:返回结果对象     失败:为None  

 

匹配一个字符-元字符

    . 字符       匹配除换行符之外的任意一个字符

    []字符      匹配集合中的任意一个字符

    [a-z]        匹配字符范围

    [^]           禁止匹配集合中的任意一个字符

 

    \d            匹配0-9任意字符

    \D            匹配任意一个非数字字符

 

    \s             匹配任意一个空白字符

    \S             匹配任意一个非空白字符

 

    \w            匹配数字 字母 下划线任意一个字符

    \W            匹配任意一个非单词字符

 

匹配多个字符 - 量词

    {n}            匹配N次

    {n,m}      匹配至少n次,最多m次

    *号            匹配0次或者任意多次

    +              匹配至少一次

    ?             匹配0-1次,可有可无

 

匹配开始位置和结束位置

开始位置:r"^x"    要求以..开始

结束位置:r"x$"    要求以..结束

 

匿名分组:此时必须加r

目的:将数据从整体中提取出来

创建:r"(正则)"

获取方式: 匹配结果对象.group(分组编号)

引用分组数据:在正则后续位置使用前面分组的数据

r '() \分组编号'

 

|    匹配左右表达式:或

()    匹配括号中 | 左右的任何一个表达式

print(re.search("^\w{4,16}@(qq|sina).com$" ,"12344@sina.com").group())

 

有名分组    命名分组

    分组名字

创建:r"(?P<分组别名>正则)"

获取数据:结果对象.group('分组名字')

引用:(?P = 分组名)

应用场景:在分组很多时,引用复杂,此时修改分组导致编号变化,匿名分组引用会失效

 

 

re高级模块

search        只查找一次,返回匹配结果

 

findall        从数据中查找制定规则的所有数据,返回值是包含所有结果的 列表

re.findall(r"",数据)--->[匹配结果,...]

 

sub            将匹配的数据进行替换 

re.sub(r"\d+", "666" , "c=1 c=2 c=3",count = 1)

参数      一         二                三                    count

将 参数三 中的符合 参数一 规则的数据替换成 参数二  count 确定替换次数,返回值为最终替换后的结果

 

注:参数二中不仅仅可以是直接的字符串数据,

还可以是一个函数名称<函数参数    返回值要求为str类型>

def func(matchobj):

    """参数是包含了匹配结果的结果对象    返回值是替换后的数据"""

    #将正则中匹配的数字构成+1

    data = matchobj.group()

    print(data)

    data = 1 + int(data)

    #返回值必须是str类型

    return str(data)

 

筛选网页数据

re.sub(r"\s|</?\w+>|&nbsp;" , "" , data)

 

split        匹配进行切割字符串,返回列表

re.split(",|:",mystr,maxsplit=1)

   正则条件    内容    次数

 

 

贪婪模式 与非贪婪模式

默认贪婪模式

非贪婪  在"*","?","+","{m,n}" 后加?,使贪婪变为非贪婪

    re.serach(r"https://.+\.jpg", url).group()

    re.serach(r"https://.+?\.jpg", url).group()

相对概念

前提条件:能否满足整体正则表达式匹配 尽量贪婪

 

r字符:

对正则中的  '\'  自动加  '\'  进行转义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值