正则表达式
正则表达式:regular expression regex RE
正则表达式是用来简洁表达一组字符串的表达式
通用的字符串表达框架
简洁表达一组字符串的表达式
针对字符串表达“简洁”和“特征”思想的工具
判断某字符串的特征归属
正则表达式在文本处理中十分常用
表达文本类型的特征(病毒、入侵等)
同时查找或替换一组字符串
匹配字符串的全部或部分
正则表达式的使用
编译:将符合正则表达式语法的字符串转换成正则式表达特征

正则表达式的语法
正则表达式语法由字符和操作符构成
正则表达式的常用操作符
正则表达式的常用操作符

实例
IP地址
Re库的基本使用
Re库介绍:Re库是Python的标准库,主要用于字符串匹配
正则表达式的表示类型

需要多加一个\来表示正则表达式的\
因此当正则表达式含有转义字符时,需要用raw string
re库的主要函数
大部分都返回match对象
re.search(pattern, string,flags=0)
pattern:正则表达式的字符串或原生字符串表示
string:待匹配字符串
flags:正则表达式使用时的控制标记

re.s可以匹配所有字符
match = re.search(r'[1-9]\d{5}','WFR 100860')
if match:
print(match.group(0))
else:
print('error')
100860
re.match(pattern, string,flags=0) 各参数与前述相同
match = re.match(r'[1-9]\d{5}','WFR 100860')#此时的match 为空
if match:
print(match.group(0))
else:
print('error')
error
match = re.match(r'[1-9]\d{5}','123456 DF')
if match:
print(match.group(0))
else:
print('error')
12re.findall(pattern, string, flags=0) 各参数与前述相同
match = re.findall(r'[1-9]\d{5}','123456 DF 102523')
print(match)

s = re.findall(r'[\d]','123.3 2.3 1000')
print(s)

s = re.findall(r'[\d\.]','123.3 2.3 1000')
print(s)

s = re.findall(r'[\d\.]*','123.3 2.3 1000')
print(s)
re.split

match = re.split(r'[1-9]\d{5}','SFF123456 DF 102523')
print(match) #删除了匹配部分

match = re.split(r'[1-9]\d{5}','SFF123456 DF 102523',maxsplit=1)
print(match)

re.finditer(pattern, string, flags=0) 各参数与前述相同
for i in re.finditer(r'[1-9]\d{5}','SFF123456 DF 102523'):
if i :#一定要先判断,如果为空会报错NoneType
print(i.group(0))

re.sub
print(re.sub(r'[1-9]\d{5}',':okok','SFF123456 DF 102523'))

print(re.sub(r'[1-9]\d{5}',':okok','SFF123456 DF 102523',count=1))

re库的另一种等价写法
rst = pat.search('BIT 100081') #此时需要把正则表达式参数去掉
regex = re.compile(pattern,flags=0)

也就等价于
大部分都返回match对象
Re库的match对象
match对象的属性
match = re.search(r'[1-9]\d{5}','NJI 102346')
if match:
print(match.group(0))
print(type(match))
print(match.string)
print(match.re)
print(match.pos)
print(match.endpos)

match = re.search(r'[1-9]\d{5}','NJI 102346')
if match:
print(match.group(0))
print(match.start())
print(match.end())
print(match.span())

Re库的贪婪匹配和最小匹配
.*
.*?
re库总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现