python qq模块_python模块re模块

re模块

re模块是python内置的匹配模块,利用正则表达式可以很好的匹配到相关的信息

findall的功能

improt re

ret = re.findall('\d+', 'dasfr123213fdsafdsa2312') #\d+是正则表达式,后面是需要匹配的数据

print(ret,type(ret))

ret = re.findall('\s+', 'dasfr123213fdsafdsa2312')

print(ret)

结果是

['123213', '2312']

[]

匹配的到时有数据,没有数据,列表为空

search的功能

ret2 = re.search('\d+', 'dasfr123213fdsafdsa2312') #search返回的是一个类的空间

print(ret2,type(ret2))

print(ret2.group()) #通过group()来获取第一个值

ret2 = re.search('\s+', 'dasfr123213fdsafdsa2312')

print(ret2,type(ret2)) #有值返回一个类的空间,没有值,返回None

print(ret2.group()) # 没有值,获取报错

结果是

123213

None

报错

math的功能

math和search调用的是一样的功能,math在匹配的时候前面带有一个'^'

ret3 = re.match('\d+', 'dasfr123213fdsafdsa2312')

print(ret3,type(ret3))

ret3 = re.match('\d+', '123213fdsafdsa2312')

print(ret3,type(ret3))

print(ret3.group())

结果是

None

123213

sub和subn替换模块

import re

ret = re.sub('\d', 'H', 'every3every4every4',1) #sub的带有四个参数,第一个正则表达式,第二个替换成的数据,第三个需要替换的数据,第四个是替换的次数

print(ret)

ret1 = re.subn('\d', 'H', 'every3every4every4') #sub的带有三个参数,参数都是一个意思,返回的时候会返回匹配的次数

print(ret1)

结果是

evaHegon4yuan4

('everyHeveryHeveryH', 3)

split切割

import re

ret = re.split('\d+','er12|213e|r231')

结果是

['er', '|', 'e|r', '']

compile预编译

简单的说就是把正则封装了

import re

ret=re.compile('-0\.\d+|-[1-9]\d+(\.\d+)?') #匹配负数

r=ret.search('sdfa-12 fdads-20')

print(r.group())

结果是

-12

finditer节省空间

import re

ret=re.finditer('\d','sjkhkdy982ufejwsh02yu93jfpwcmc')#返回一个生成器

for i in ret:

print(i.group())

结果是

9

8

2

0

2

9

3

findall的优先级

import re

ret = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')

print(ret) #因为findall会匹配结果组,优先返回结果,所有直接返回oldboy

结果是

['oldboy']

ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com')

print(ret)

结果是

['www.oldboy.com']

split的优先级

import re

ret=re.split("\d+","every5one9is")

print(ret)

结果是

['every', 'one', 'is']

ret=re.split("(\d+)","every5one9is")

print(ret)

结果是

['every', '5', 'one', '9', 'is']

#在匹配部分加上()之后所切出的结果是不同的,

#没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项,

#这个在某些需要保留匹配部分的使用过程是非常重要的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值