Python正则

文章介绍了正则表达式的基本概念,展示了如何用Python的re模块进行字符串匹配、搜索、替换和切割操作。通过例子解释了match()、search()函数以及正则的元字符功能,强调了正则在数据处理中的高效性。
摘要由CSDN通过智能技术生成

正则

(1) 正则的基本概念

表达式由需要匹配的字符串和一些特殊字符组成,可以在字符串当中匹配出需要查找的对象。通过正则表达式快速快捷的匹配出符合要求的特征字符串,比如利用病毒的特征值来查找文本中的病毒。

def isPhone(phone):
    if len(phone)==11 and phone.isdigit() and phone[0:2]=='13':
        print('这是手机号')
    else:
        print('这不是手机号')

在这里插入图片描述
这是一段判断是否为手机号的代码,看起来很繁琐,条件很多,那么如果用正则该怎样表达呢?

import re
res = re.findall(r'^13\d{9}','13145678956')  #^13代表是13开头的数字,\d{}代表后面还有9位数字
print(res)

在这里插入图片描述
可以看出来使用正则会更方便快捷的筛选出我们想要的数据。

import re
r = re.compile('\d')    #提前写好正则表达式,方便后面进行数据匹配
print(r.findall('41354asc'))

在这里插入图片描述
当然正则表达式也可以像上面一样提前写好,不过这种方法一般用的很少,因为实际中我们所要处理的数据都是各种各样的。所以一般都是直接写正则的匹配式。

(2)re模块
re.match() 匹配字符串开头,只匹配一次。

import re
st = 'this is python 2023'
res = re.match('this',st)     #匹配字符串开头,只匹配一次

在这里插入图片描述
可以看到出现的是这种格式,其中span代表数据下标位置。如果我们想要打印指定内容可以:

import re
st = 'this is python 2023'
res = re.match('this',st)       #匹配字符串开头,只匹配一次

print(res.span())               #获得match获取到的下标位置
print(res.group())              #获得match匹配到的数据

在这里插入图片描述
re.search()匹配整个字符串,只匹配一次。内容获取方法一样是res.span()和res.group()
③正则进行字符串替换re.sub('被替换的内容',‘替换的内容’,’替换的位置‘,‘替换次数’)

import re
st = 'this is python 2023'
res = re.sub('t','T',st,1) #正则进行字符串替换
print(res)

在这里插入图片描述
④正则的字符串切割,与普通字符串切割不同,正则的切割支持多种切割方式。

import re
st = 'this is python 2023.03.06,zs'
res = re.split('[ ,.]',st)   #通过空格逗号和点进行切割
print(res)

在这里插入图片描述
(3)元字符

字符作用
.通配符,匹配任意字符,除了\n以外
\正则转义
^匹配字符串开始位置,在[]表示不取字符
$匹配字符串的结束位置
{}匹配字数
*匹配0次或多次
+匹配一次或多次
匹配0次或一次
[]字符集合
()分组分配
I或运算 分支条件
\d匹配数字 , D是匹配除了数字其他所有
\s匹配类似空格\n \t , S是匹配除此其他
\w匹配匹配字母数字下划线,W是其他包括特殊字符
\b代表边界,如\bis\b表示匹配is
*表示0到多次
+表示1到多次
表示0到1次
.*?问号写在次数后边代表非贪婪模式,贪婪模式表示抛开范围尽可能多的获取
>()<尖括号帮忙匹配,加小括号是只保留小括号里的内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值