操作python中的正则表达式(下)
程序员文章站
2022-07-16 16:26:23
...
六月最后一天,我的精神支柱家驹二十五年祭,愿你依然高歌,不羁放纵爱*。
进入正则下篇,上代码吧:
import re
pat=re.compile(r'(\d+)')
print('*****compile函数用于编译正则表达式,生成一个正则表达式Pattern对象*****')
p=pat.match('ni2333hao666a')
print(p)
p1=pat.match('ni2333hao666a',1,8)
print(p1)
p2=pat.match('ni2333hao666a',2,8)
print(p2)
p3=pat.match('ni2333hao666a',2,12)
print(p3)
p4=pat.search('ni2333hao666a')
print(p4)
print(p3.group())
print(p3.groups()) #match和search都只匹配一次
print('*****match和search匹配一次,而findall匹配所有*****')
p5=pat.findall('ni2333hao666a') #以列表形式返回全部匹配结果
print(p5)
p6=pat.findall('ni2333hao666a',2,11)
print(p6)
p7=pat.finditer('ni2333hao666a') #类似于findall,不过它返回迭代器
for pp in p7:
print(pp.group())
print('*****split函数以各种形式切分字符串*****')
p8=pat.split('ni 2333-hao,666.a') #按数字切分
print(p8)
p9=re.split(r'\W+','ni 2333-hao,666.a')
print(p9)
p10=re.split(r'(\W+)','ni 2333-hao,666.a') #对比上一个,加()之后将分隔符也显示了出来
print(p10)
p11=re.split(r'\W+','ni 2333-hao,666.a',2) #切两次
print(p11)
有密集恐惧症的人估计是要晕过去了,我实在不知道该怎么组织语言了,大家忍忍。。
分三部分吧,第一部分是关于上篇谈到的match和search两个方法,前者只能从开头匹配,而后者可以任意角度全方位多层次匹配~~第二部分是findall和finditer两个方法,前者可以匹配多次,这个是相对于match以及search只能匹配一次而言的,注意一下起始和结束的区间,结束位是不包含在内的,就像第二个findall,下标11为第三个6,则其是不在匹配范围内的;第三个是split方法,切分字符串的,分隔符为正则匹配的字串,本例中\W匹配的是非字母数字下划线,注意一下带()和不带()的区别……
看下效果:
如果将一开始的pat=re.compile(r'(\d+)')改为pat=re.compile(r'(\d+)(\d+)'),看下效果:
将每一个匹配项分为了两个……如果写三个或者四个那就继续划分~~
之后还有很多用到正则的地方,到时再仔细研究吧,还是具体问题具体分析,前方路漫漫,且行且珍惜。
上一篇: Batch Normalization
下一篇: 注册贵美商城