python---正则表达式

本文介绍了Python中正则表达式的基本概念和使用方法,包括编译、常用操作符、re库的函数如search、match、findall、split、finditer和sub,以及贪婪匹配和最小匹配的原理。通过实例解析了如何匹配IP地址,并提供了正则表达式测试网站的推荐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 概念
    正则表达式(regular expression,regex,RE),是用来简洁表达一组字符串的表达式,例如,将一一列举的字符串用RE表示就很简洁
    在这里插入图片描述
    下面举例子
    无穷字符串组
    在这里插入图片描述
    在这里插入图片描述
    是一种通用的字符串表达框架
    正则表达式的使用:
    编译:符合正则表达式语法的字符串转换成正则表达式特征

  2. 正则表达式的语法
    例子
    在这里插入图片描述
    正则表达式是由字符和操作符组成的
    常用操作符
    在这里插入图片描述
    这里推荐一个网站正则表达式测试网站,下面举几个例子
    在这里插入图片描述
    经典正则表达式
    在这里插入图片描述
    匹配IP地址的正则表达式,IP地址分4段,每段0-255
    在这里插入图片描述
    在这里插入图片描述

  3. re库的基本使用
    re库是python的标准库,主要用于字符串匹配,调用方法:import re

表示类型
raw string 类型
raw string用于表达正则表达式,表示为:r’text
e.g r’[1-9]\d{5}’
原生字符串(raw string)不包含转义符()
string类型
更繁琐,是因为如果出现\d这种的话前面需要再添加\,避免转义符冲突

re库主要功能函数
在这里插入图片描述
例子
search:

#re.search(pattern,string,flags=0)
#pattern:正则表达式字符串或者原生字符串表示;string:待匹配字符串;flags:正则表达式使用时的控制标记
import re 						
exam = '\d+'
str1= "abc1233AAPYTNACM"	               
ret = re.search(exam,str1)  	 
print(ret)

注释:在这里插入图片描述
match:

#re.search(pattern,string,flags=0)
#pattern:正则表达式字符串或者原生字符串表示;string:待匹配字符串;flags:正则表达式使用时的控制标记
import re 						
exam = '\d+'
str1= "253abc1233AAPYTNACM"	              
ret = re.match(exam,str1)  	
print(ret)

findall:

#re.search(pattern,string,flags=0)
#pattern:正则表达式字符串或者原生字符串表示;string:待匹配字符串;flags:正则表达式使用时的控制标记
import re 						
exam = '\d+'
str1= "abc1233AAPYTNACM456"	              
ret = re.findall(exam,str1)  	
print(ret)

split:

#re.search(pattern,string,maxsplit=0,flags=0)
#pattern:正则表达式字符串或者原生字符串表示;string:待匹配字符串;maxsplit:最大分割术,剩余部分做最后一个元素输出;flags:正则表达式使用时的控制标记
import re 						
exam = '\d+'
str1= "abc1233AAPYTNACM456"	              
ret = re.split(exam,str1)  	
print(ret)

这个split的结果得分析一下,最后结果是不符合’\d+'的,如下图
在这里插入图片描述
加上maxsplit=1
只分割了第一个不符合的
只分割了第一个不符合的
finditer:
我懒,不想打了
在这里插入图片描述
sub:
在这里插入图片描述

import re 						
exam = '\d+'
str1= "abc1233AAPYTNACM"	              
ret = re.sub(exam,'dwj',str1)  	
print(ret)

re库的另一种等价用法
在这里插入图片描述
这里再介绍一下compile
regex=re.compile(pattern,flags=0),将正则表达式字符串形式编译成表达式对象,同时也有上面六种函数,不过是regex.function()

  1. re库的match对象
    在这里插入图片描述
    在这里插入图片描述
    更多属性应用时自行查找

  2. re库贪婪匹配和最小匹配
    贪婪匹配:re库默认贪婪匹配,输出匹配最长的字符串

import re 						
exam = r'PY.*N'  #r.text,原生字符串类型,.指任意单个字符,*前一个字符0次或无限次扩展
str1= 'PYANBNCNDN'	               
ret = re.search(exam,str1)  	 
print(ret)

结果是PYANBNCNDN,最长
最小匹配:最短字符串
在这里插入图片描述
例子

import re 						
exam = r'PY.*?N'
str1= 'PYANBNCNDN'	               
ret = re.search(exam,str1)  	 
print(ret)

在这里插入图片描述

这是正则基础知识,后面会继续更出一个大例子。

Enjoy!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值