python基础__re正则表达式
一、正则表达式可以实现匹配、查找、替换和格式化数据等操作。
1、模糊匹配_查找姓名和年龄
1 import re 2 3 Nameage = ''' 4 Janice is 22 and Theon is 33 5 Gabriel is 44 and Joey is 21 6 ''' 7 8 ages = re.findall(r'\d+', Nameage) #查找出字符串中所有数字 9 names = re.findall(r'[A-Z][a-z]*', Nameage) #找出以大写字母开头、小写字母其次、长度大于2的字符 10 11 ageDict = {} 12 for i in names: 13 ageDict[i] = ages[names.index(i)] 14 print(ageDict) #{'Janice': '22', 'Theon': '33', 'Gabriel': '44', 'Joey': '21'}
2、模糊匹配_匹配单个字符
1 import re 2 Str = "Sat, hat, mat, pat" 3 allStr = re.findall("[shmp]at", Str) 4 print(allStr) # ['hat', 'mat', 'pat']
3、模糊匹配_匹配一串字符范围
1 import re 2 Str = "Sat, hat, mat, pat" 3 allStr = re.findall("[a-h]at", Str) 4 print(allStr) # ['hat']
4、模糊匹配_反向匹配一串字符范围
1 import re 2 Str = "Sat, hat, mat, pat" 3 allStr = re.findall("[^a-h]at", Str) # ^表示反选 4 print(allStr) # ['Sat', 'mat', 'pat']
5、模糊匹配_获取字符串中数字个数
1 import re 2 randstr = "12345上山打老虎" 3 print("Matches:", len(re.findall("\d", randstr))) # Matches:5
6、group显示预期结果
1 import re 2 result=re.match("嫦娥\W号","嫦娥*号") #\W表示除[0-9a-zA-Z_]之外的字符 3 print(result) # 返回<re.Match object; span=(0, 4), match='嫦娥*号'> 4 a=result.group() 5 print(a) # 嫦娥*号
7、限定匹配长度
1 import re 2 result=re.search("嫦娥\d{2}号","嫦娥77号") # 长度取3的话,就会报错 3 print(result.group()) # 嫦娥77号
二、常用匹配符号
\d:表示一个十进制的数字 [0-9]
\d*:表示0个或多个数字
\d+:表示1个或多个数字
\d?:表示最多只能出现一个数字
\D:表示非数字
\w:表示一个 [0-9a-zA-Z_] 字符
\W:表示除[0-9a-zA-Z_]之外的字符
\s:表示一个空白字符(空格,tab,换页符等)
\S:表示一个非空白字符
三、re库方法大全
一个人的傲慢,多是来源于无知;真正见识过世界广阔的人,往往会“犹怜草木青”,谦卑的对待身边的每一个人。每个人都有自己“花开”的时节,也有自己“花败”的时节。只有在“花开”的时候,多结善缘,才能在“花败”的时候,平稳着陆。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!