说说在 Python 中,如何找出所有字符串匹配

Regex 对象有一个 findall() 方法,它会返回包含所查找字符串的所有匹配。这与 search() 方法明显不同,search() 将返回一个 Match 对象,其中包含被查找字符串中的 “ 第一次 ” 匹配文本。请看以下示例,注意区分:

phone_num_regex = re.compile(r'\d\d\d\d-\d\d\d\d\d\d\d\d')
mo = phone_num_regex.search('我的联系号码为: 0591-83822032;另一个号码是:0591-83822033.')
print('查到的联系号码: ' + mo.group())

phone_num_regex = re.compile(r'\d\d\d\d-\d\d\d\d\d\d\d\d')
phone_nums = phone_num_regex.findall('我的联系号码为: 0591-83822032;另一个号码是:0591-83822033.')
print('查到的联系号码: ' + str(phone_nums))

运行结果:

查到的联系号码: 0591-83822032
查到的联系号码: [‘0591-83822032’, ‘0591-83822033’]

如果调用 findall 的正则表达式不存在分组(比如上例),那么方法 findall() 将返回一个匹配字符串的列表,例如上例的 [‘0591-83822032’, ‘0591-83822033’]。

如果调用 findall 的正则表达式存在分组,那么方法 findall() 将返回一个字符串元组的列表(每个分组对应一个字符串),请看下例:

phone_num_regex = re.compile(r'(\d\d\d\d)-(\d\d\d\d\d\d\d\d)')
phone_nums = phone_num_regex.findall('我的联系号码为: 0591-83822032;另一个号码是:0591-83822033.')
print('查到的联系号码: ' + str(phone_nums))

运行结果:

查到的联系号码: [‘0591-83822032’, ‘0591-83822033’]
查到的联系号码: [(‘0591’, ‘83822032’), (‘0591’, ‘83822033’)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值