Python3 re 的两种匹配方式对比


使用 re 模块有两种方式:

使用 re.compile 函数生成一个 Pattern 对象,然后使用 Pattern 对象的一系列方法对文本进行匹配查找;
直接使用 re.match, re.search 和 re.findall 等函数直接对文本匹配查找;
下面,我们用一个例子展示这两种方法。

先看第 1 种用法:

Python
import re # 将正则表达式先编译成 Pattern 对象 pattern = re.compile(r'\d+') print pattern.match('123, 123') print pattern.search('234, 234') print pattern.findall('345, 345')
1
2
3
4
5
6
import re
# 将正则表达式先编译成 Pattern 对象
pattern = re . compile ( r '\d+' )
print pattern . match ( '123, 123' )
print pattern . search ( '234, 234' )
print pattern . findall ( '345, 345' )

再看第 2 种用法:

Python
import re print re.match(r'\d+', '123, 123') print re.search(r'\d+', '234, 234') print re.findall(r'\d+', '345, 345')
1
2
3
4
import re
print re . match ( r '\d+' , '123, 123' )
print re . search ( r '\d+' , '234, 234' )
print re . findall ( r '\d+' , '345, 345' )

如果一个正则表达式需要用到多次(比如上面的 \d+),在多种场合经常需要被用到,出于效率的考虑,我们应该预先编译该正则表达式,生成一个 Pattern 对象,再使用该对象的一系列方法对需要匹配的文件进行匹配;而如果直接使用 re.match, re.search 等函数,每次传入一个正则表达式,它都会被编译一次,效率就会大打折扣。

因此,我们推荐使用第 1 种用法。




  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值