python:正则表达式

一、概念
正则表达式是一种匹配方式,用于对字符串里的子字符串进行提取、修改、替换等操作,通过re模块实现。

re模块共有三个主要方法:

1.re.match(pattern, string, flags=0):匹配字符串的开头,如果匹配成功则返回完整匹配字符串;

注意:只检查字符串开头是否匹配,若开头不匹配,就返回None;需用group()打印结果,

2.re.search(pattern, string, flags=0):扫描字符串,返回第一个完整匹配的字符串。

注意:只返回第一个匹配成功的内容,需用group()打印结果。

3.re.findall(pattern, string, flags=0): 扫描整个字符串,返回所有与pattern匹配的列表;

注意: 如果pattern中有分组则返回与分组匹配的列表。

二、正则表达式详解
每个正则表达式由普通字符和元字符组成。
普通字符:0123456789abcd@…
元字符:正则表达式所特有的符号 => [0-9],^,*,+,?

下面是字符规则:
(一)查什么:
在这里插入图片描述
(二)查多少
在这里插入图片描述
(三)怎么查
在这里插入图片描述
注意:1.在正则表达式中,通过一对圆括号括起来的内容,我们就称之为==“子表达式”==(即:分组),findall若有分组,则只返回分组内容,返回内容并被叫做“捕获”,不同于匹配。
2. 在正则表达式中,我们可以通过\n(n代表第n个缓存区的编号)来引用缓存区中的内容,我们把这个过程就称之为"反向引用"(即:后向引用)。

三、代码实现

例:
import re       #导入re模块
(1)match方法:
str1 = '<book></book>'
result = re.match(r'<(?P<mark>\w+)></(?P=mark)>', str1)
print(result.group())   #检查字符串开头是否匹配,打印匹配内容


(2)search方法:
str1 = '<book></book>'
result = re.search(r'<(?P<mark>\w+)></(?P=mark)>', str1)
print(result.group())   #扫描字符串,打印匹配到的第一个内容


(3)findall方法
result = re.findall('\d', 'a1b2c3d4f5')
if result:
    print(result)     #扫描整个字符串,直接打印所有匹配结果
else:
    print('未匹配到任何数据')

最后,分享一个综合运用(因为findall方法比较方便好用,平时使用较多):

例:匹配出163、126、qq等邮箱
import re   #导入模块
email = '1478670@qq.com, go@126.com, heima123@163.com'
result = re.findall('\w+@(qq|126|163).com', email)
if result:
    for i in result:
        print(i)     #只打印分组内的内容:qq或126或163
else:
    print('未匹配到任何数据')

备注:finditer()方法与findall()方法类似:都会返回所有匹配结果,只不过finditer是返回迭代器,findall返回列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值