re模块

#字符匹配
#核心内容元字符.^$*+?{}[]|()\
import re
ret = re.findall('a..in','helloalvin')#'.'是通配符,什么都可以代替,除了换行符,一个点代表一个字符
print(ret)#['alvin']
#'.'是通配符,什么都可以代替,除了换行符
ret = re.findall('^a...in','alvwinhello')#['alvwin']#^a表示以a开头的
print(ret)
ret = re.findall('a..n$','alvwinhelloaxdn')#['axdn']#n$表示以n结尾的
print(ret)
ret = re.findall('a..n','alinhelloaxdn')#['alin', 'axdn'],找到所有a后面两位是n的字符串,并以列表形式展示
print(ret)
#重复符号*+?{}
ret = re.findall('d*','alinddddheldddloaxdn')#['', '', '', '', 'dddd', '', '', '', 'ddd', '', '', '', '', 'd', '', '']
#什么都没有就是零个匹配上的为空,*是匹配0到无穷次
print(ret)
ret = re.findall('d+','alinddddheldddloaxdn')#['dddd', 'ddd', 'd'] +是匹配1到无穷次
print(ret)
ret = re.findall('alex*','alinddddhelale')#['ale']
print(ret)
ret = re.findall('alex+','alinddddhelale')#[]
print(ret)
ret = re.findall('alex?','alinddddhelalexxx')#?匹配0或者1次  ['alex']
print(ret)
ret = re.findall('alex{1,6}','alinddddhelalexxx')#?匹配1到6之间的包含1和6次  ['alexxx']
print(ret)
ret = re.findall('alex{6}','alinddddhelalexxx')#?匹配6次x  []
print(ret)
ret = re.findall('alex*','alinddddhelalexxx')#  ['alexxx']贪婪匹配,就是尽可能多的匹配x
print(ret)
ret = re.findall('alex*?','alinddddhelalexxx')# ['ale']加上一个?就变成惰性匹配,就是尽可能少的匹配x
print(ret)
ret = re.findall('www[oldboy baidu]','wwwbaidu')# ['wwwb']
print(ret)
ret = re.findall('x[yz]','xydfgxz')#['xy', 'xz']或关系
print(ret)
ret = re.findall('x[a*z]','xydfgxaaasdxdf')#['xa']或关系[]里面没有什么特殊符号,所以不存在通配符,只是一个单纯的*
print(ret)
ret = re.findall('x[a-z]','xydfgxzwefsdxdf')#['xy', 'xz', 'xd'] 或关系 a到z '-'是可以在[]有特殊意义的
print(ret)
ret = re.findall('x[a-z]*','xydfgxzwefsdxdf')#['xydfgxzwefsdxdf'] 或关系 匹配的是[a-z]0到无穷次
print(ret)
ret = re.findall('q[^a-z]*','q2qz132')#['q2', 'q'] 或关系 [^a-z]匹配的是非a到z的字符  ^也是可以在[]有特殊意义的
print(ret)
# '\'作用就是转义,使得符号只是普通的符号,能让有意义的变成没有意义,让没有意义的符号变成有意义的,比如上面的()
#让普通的字符变得有意义
# \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匹配一个特殊字符边界,比如空格,&,#等

# '|'作用是或的意思

#()就是结合在一块的意思
#匹配单单次I
import re
ret = re.findall(r'I\b','hello I am zislIe')#['I']#带\的要加r或者再加一个\,加上r之后,Python解释器不对/b做任何处理,就是/b
print(ret)
ret = re.findall('I\\b','hello I am zislIe')#['I']
print(ret)
ret = re.findall(r'ka|b','adjkabkbsf')#['ka', 'b', 'b'] ka 或者 b
print(ret)
ret = re.findall('d\\\\l','sdfsd\lasdf')#['I']#['d\\l']
print(ret)
#re.findall是找到字符串里面所有符合结果的数据以列表展示,
# re.search()是找到字符串里面的符合结果的数据,找到就停止,返回一个字符串
ret = re.search('((?P<name>[a-z]+)(?P<age>\d+))','alex35gghjg54').group()
#alex35 ()具有分组的擢用?P<name>是给组命名,通过group方法来取得分组的信息,
# 作用是如果取得一个字符串,需要用到里面不同的信息,可以用此方法进行信息分割
print(ret)
ret = re.search('((?P<name>[a-z]+)(?P<age>\d+))','alex35gghjg54').group('name')#alex
print(ret)
ret = re.search('((?P<name>[a-z]+)(?P<age>\d+))','alex35gghjg54').group('age')#35
print(ret)
#re 模块下的方法
re.findall('a','dssadf')#找到字符串里面所有符合结果的数据以列表展示
re.search('a','dssadf')
re.match('a','abc').group()#和search一样,不过只在字符串开始出进行匹配
ret = re.split('[ab]','abcd')#先按a分割,得到‘’和bcd,再对这两个值进行分别按b分割
print(ret)
ret= re.sub('\d','abc','aflcin5yuan6',1)#aflcinabcyuan6  把数字变为abc,只替换一次1是替换的次数哦,\d是被替换的,abc是替换的
print (ret)
com = re.compile('\d+')#这个是写匹配的规则,赋值给com,
ret = com.findall('23dfgder')#['23']#使用com去调用findall方法,里面只需要传递被处理的数据就可以了
print(ret)
ret = re.finditer('\d','aflcin5ydu6a5n6')#把处理的结果放到内存里,使用迭代器的方法去调用
print(ret)#<callable_iterator object at 0x01BAE1D0>
print(next(ret).group())#5
print(next(ret).group())#6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhaoXuWen23

你的鼓励是我的动力,持续更新中

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值