re模块,正则表达式

通配符".":代表任意一个字符,换行符不算.

“^”:字符串开头匹配

“$”:字符串结尾匹配

“*”:匹配0至无穷次(贪婪匹配)

“+”:匹配1至无穷次(贪婪匹配)

“?”:匹配0次至1次

{0,} == *

{1,} == +

{0,1} == ?

{6} 匹配6次(精准匹配)

{1,5} 匹配1-5次(贪婪匹配)

前面的*,+,?等都是贪婪匹配,后面加?变成惰性匹配,按最小次数匹配

字符集[ ]:

q[a-z]匹配q和a-z中的任意一个

q[a-z]*匹配q和a-z中的最长次数

q[^a-z]不是a-z的都匹配上

q[]

\ 转义,让普通字符变得有意义,让有意义的字符变成普通字符

\d 匹配任何十进制,相当于类[]0-9]
\D匹配任何非数字字符,相当与类[^0-9]
\s匹配任何空白字符,相当于类[\t\n\r\f\v]
\S匹配任何非空白字符,相当于类[^\t\n\r\f\v]
\w匹配任何字母数字字符,相当于类[a-zA-Z0-9_]
\W匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]
\b匹配一个特殊字符边界,比如空格,&,#等

re.findall(r’I\b’,‘I am boy’),找出全部并把结果放在列表,这里面的r表示字符串是原生字符串,不含解释器的转义

| 管道符,表示"或"

(?P < name >\w+),括号()表示分组,?P表示给分组匹配结果命名,用于.group(“name”)

(?:)表示取消组的显示优先级

默认组的显示优先级最高,每次匹配都会把每个组的结果显示出来

import re

ret = re.findall('(\d{2})|(\w{3})','24ggdcom')  #默认组的显示优先级最高,每次匹配都会把每个组的结果显示出来
print(ret)

输出:
[(‘24’, ‘’), (’’, ‘ggd’), (’’, ‘com’)]

re.search(’\d+’,‘slgdsg23kl4l34’).group(),

该方法,表示只找第一个匹配的结果,得到的结果需要加.group()

re.match(’\d+’,‘slgdsg23kl4l34’).group()只会从字符串开始匹配结果,得到的结果需要加.group()

re.split(" “,“hello abc ade”)用空格” "分割字符串,得到的结果是列表

re.split(’[a,b]’,“hello abc ade”),先将字符串按照a分割,再将结果按照b分割

re.sub(’[^\w]+’,’ ‘,l,4)将字符串l的[^\w]部分用’ '替换4次

l = '23421s\s4lkf s@ adlgn a;sfwlkqn v'
print(re.sub('[^\w]+',' ',l,4))

输出:
23421s s4lkf s adlgn a;sfwlkqn v

re.subn(’ [^\w ]+’,‘s’,l将字符串l的[^\w]部分用’s’替换并统计替换次数,得到一个元祖

l = '23421s\s4lkf s@ adlgn a;sfwlkqn v'
print(re.subn('[^\w]+','s',l))

输出:

(‘23421sss4lkfsssadlgnsassfwlkqnsv’, 6)

re.compile()制定表达式规则,可重复利用

import re

l = '23421s\s4lkf s@ adlgn a;sfwlkqn v'

com = re.compile('[^\w]+')
print(com.subn(' ',l))

re.finditer("\d",“sfdagew342rtfd5dsf”),找出全部匹配结果,组成一个迭代器,用next()获得结果是一个match对象,需要用.group()获得结果

import re

l = '23421s\s4lkf s@ adlgn a;sfwlkqn v'

ret = re.finditer('\d',l)
print(ret)
print(ret.__next__().group())
print(next(ret).group())

输出:
<callable_iterator object at 0x000000D24EC84F98>
2
3

()分组里面前端加?:表示取消()括号的优先级,不加表示优先取括号内的内容

import re

l = '23421s\swww.baidu.com4lkf v'

ret = re.findall('www\.(?:baidu|163).com',l)
print(ret)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值