众里寻他千百度

一、一见钟情的match:从字符串的起始位置匹配,成功则返回第一个匹配对象,失败则返回None
match

import re
str = '98.5分,89分'
res = re.match(r'\d+\.?\d*', str)
print(res)
print(res.group(0))
<re.Match object; span=(0, 4), match='98.5'>
98.5
# 从起始位置匹配失败。
str = '语文:98.5分,数学:89分'
res = re.match(r'\d+\.?\d*', str)
print(res)
None

二、从一而终的search:搜索整个字符串,并返回第一个成功的匹配对象,失败也返回None
search

str = '语文:98.5分,数学:89分'
res = re.search(r'\d+\.?\d*', str)
print(res)
print(res.group(0))
<re.Match object; span=(3, 7), match='98.5'>
98.5

三、多情种findall:返回成功匹配的所有子字符串,并返回一个列表,若没有找到匹配,则返回空列表
findall

str = '语文:98.5分,数学:89分'
res = re.findall(r'\d+\.?\d*', str)
print(res)
['98.5', '89']
str = '语文:无,数学:无'
res = re.findall(r'\d+\.?\d*', str)
print(res)
[]

四、一次匹配多组的情况
灯火阑珊

str = '98.5分,89分;60.5分,70.5分'
res = re.match(r'(\d+\.?\d*)分,(\d+\.?\d*)分', str)
# 返回匹配整个正则表达式的字符串。
print('group(0):', res.group(0))
# 返回匹配第1个组(组号从1开始)的子字符串。
print('group(1):', res.group(1))
# 返回匹配第2个组(组号从1开始)的子字符串。
print('group(2):', res.group(2))
group(0): 98.5分,89分
group(1): 98.5
group(2): 89
str = '98.5分,89分;60.5分,70.5分'
res = re.search(r'(\d+\.?\d*)分,(\d+\.?\d*)分', str)
# 返回匹配所有小组的子字符串的一个元组。
print('groups():', res.groups())
groups(): ('98.5', '89')
str = '98.5分,89分;60.5分,70.5分'
# 可对各小组起名标识。
res = re.search(r'(?P<Chinese>\d+\.?\d*)分,(?P<Maths>\d+\.?\d*)分', str)
# 返回一个匹配所有命名小组的字典。
print('groupdict():', res.groupdict())
groupdict(): {'Chinese': '98.5', 'Maths': '89'}
str = '98.5分,89分;60.5分,70.5分'
res = re.findall(r'(\d+\.?\d*)分,(\d+\.?\d*)分', str)
print(res)
[('98.5', '89'), ('60.5', '70.5')]
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值