Python之正则表达式

re模块

result = re.match(正则表达式,要匹配的字符串)

字符串匹配正则表达式,则match方法返回匹配对象(Match Object),否则返回None(注意不是空字符串"")

正则表达式的单字符匹配
在这里插入图片描述
Python中字符串前面加上 “r” 表示原生字符串,因为"\“既可表示转义字符也可表示字符”\"

匹配多个字符的相关格式
在这里插入图片描述
表示边界
在这里插入图片描述
$前匹配的字符串必须是在最后的位置

匹配分组
在这里插入图片描述
搜索
search

>> ret = re.search(r"\d+", "阅读次数为 9999")
>> ret.group()
'9999'

findall

>> ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")
>> print(ret)
['9999', '7890', '12345']

sub 将匹配到的数据进行替换
方法1

>> ret = re.sub(r"\d+", '998', "python = 997")
>> print(ret)
998

方法2

def add(temp):
	strNum = temp.group()
	num = int(strNum) + 1
	return str(num)

ret = re.sub(r"\d+", add, "python = 997")
print (ret)
998

split 根据匹配进行切割字符串,并返回一个列表

ret = re.split(r": |  ","info:xiaoZhang 33 shandong")
print(ret)
['info', 'xiaoZhang', '33', 'shandong']

python贪婪和非贪婪
贪婪:尝试匹配尽可能多的字符,非贪婪则相反
在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪

>>> re.match(r"aa(\d+?)","aa2343ddd").group(1)
'2'
>> re.match(r"aa(\d+)ddd","aa2343ddd").group(1) 
'2343'
>> re.match(r"aa(\d+?)ddd","aa2343ddd").group(1)
'2343'
>> re.match(r"aa(\d+?)ddd","aa2343ddd").group()
 'aa2343ddd'

注意:()小括号里为返回项,group(k)为第k个括号匹配到的项,group()没有参数则返回所有匹配项

编译
如果一个正则表达式要重复使用几千次,可以预编译该正则表达式,以省去后面的编译过程

>>> re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')      #编译
>>> re_telephone.match('010-12345').groups()
('010', '12345')

参考文献

【1】正则表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值