Python正则表达式的简单学习

Python的正则表达式

导入模块
import re
相关函数
re.compile()  创建一个正则对象(例:regex1=re.compile(r’\d\d\d’))
search()  传入一个匹配的字符串,输出结果为匹配到的第一个(例:result=regex1.search(‘455或655’),输出结果为:455)
findall()  传入一个匹配的字符串,输出结果为匹配到所有结果,并以列表的形式输出(例:result=regex1.findall(‘455或655’),输出结果为:[‘455’,‘655’])
group() 输出查找匹配的结果,括号中填0或不输入任何值,则直接输出,若输入从1开始的数字,则只输出匹配到的对应的组值,创建正则对象是用()分组(例:regex1=re.compile(r’(\d\d\d)-(\d\d\d-\d\d\d\d))
字符分类
\d  0到9的任意数字
\D 除0到9数字以外的任意字符
\w 任意字母,数字,下划线字符
\W 除字母,数字,下划线的任意字符
\s 空格,制表符,换行符(可理解为匹配的空白字符)
\S 除空格,制表符,换行符以外的字符
匹配类型
? 实现可选匹配 例:re.compile(r’Bat(wo)?man’),匹配Batman或Batwoman都会输出
* 实现零次或多次匹配
+ 实现一次或多次匹配
{} 实现指定次数匹配
实例
import re
phoneNumber=re.compile(r’\d\d\d-\d\d\d-\d\d\d\d’)#创建一个正则对象(匹配对象,\d表示数字)
str=‘my number is 112-151-5443’
str1=phoneNumber.search(str) #向创建的对象传入想要查找的字符串
print(‘phoneNumber:’+str1.group()) #返回匹配的字符串

phoneNumber1=re.compile(r’(\d\d\d)-(\d\d\d-\d\d\d\d)’) #使用括号进行分组
str2=phoneNumber1.search(str)
print(str2.group()) #分组查询编号是从1开始,若不输入或输入为0,就显示全部匹配对象
print(str2.group(0))
print(str2.group(1))#查询第一组值
print(str2.group(2))#查询第二组值
print(str2.groups())#查询所有分组情况并以元组的形式输出

heroRegex1=re.compile(r’Bat(man|woman)’)#使用管道(|)匹配多个分组
strx=‘Batmobile and Batman or Batwoman’
mo1=heroRegex1.search(strx)
print(‘mo1:’+mo1.group()) #search()查询到第一个时就会终止,所以输出结果为Batman
mo2=heroRegex1.findall(strx)#findall()以列表的形式返回所有匹配的对象
print(mo2)

heroRegex2=re.compile(r’Bat(wo)?man’) #使用?实现可选匹配
m1=‘Batman’
m2=‘Batwoman’
print(heroRegex2.search(m1).group())
print(heroRegex2.search(m2).group())

heroRegex3=re.compile(r’Bat(wo)man’) #使用匹配零次或多次
m3=‘Batman’
m4=‘Batwowowoman’
print(heroRegex3.search(m3).group())
print(heroRegex3.search(m4).group())

heroRegex4=re.compile(r’Bat(wo)+man’) #使用+匹配一次或多次
m5=‘Batwoman’
m6=‘Batwowowoman’
print(heroRegex4.search(m5).group())
print(heroRegex4.search(m6).group())

heroRegex5=re.compile(r’(ha){2}’) #使用{}匹配特定次数
m7=‘hahahaha’
print(heroRegex5.search(m7).group())

heroRegex6=re.compile(r’(ha){1,3}’) #贪心匹配,匹配到给定的数值最大的字符串(默认为贪心)
heroRegex7=re.compile(r’(ha){1,3}?’)#在后面加个?,表示非贪心匹配,匹配到给定的数值最小的字符串
print(heroRegex6.search(m7).group())
print(heroRegex7.search(m7).group())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值