Python中re模块详细介绍
正则的介绍及应用实例详解
""" 1、什么是正则 正则就是用一系列具有特殊含义的字符组成一套规则,该规则用来描述具有某一特征的字符串, 正则就是用来去一个大的字符串中匹配出符合规则的子字符串 2、为什么要用正则 1、用户注册 2、爬虫程序 3、如何用正则 """ import re #\w匹配字母数字下划线-----------\W匹配非字母数字下划线 print(re.findall('\w','hello 123_ */-=')) print(re.findall('\W','hello 123_ */-=')) #\s匹配任意空白字符(\n \t都是空,都可以被\s匹配)-----------\S匹配任意非空白字符 print(re.findall('\s','hell\no 12\t3_ */-=')) print(re.findall('\S','hell\no 12\t3_ */-=')) #\d匹配任意数字-------------\D匹配任意非数字 print(re.findall('\d','hell\no 12\t3_ */-=')) print(re.findall('\D','hell\no 12\t3_ */-=')) print(re.findall('\n','hell\no 12\t3_ */-=')) print(re.findall('\t','hell\no 12\t3_ */-=')) print(re.findall('l','hell\no 12\t3_ */-=')) #直接匹配我们输入的内容 print(re.findall('egon','my name is egon,egon is beautiful')) # egon # ^只匹配字符串的开头----------$只匹配字符串的末尾 print(re.findall('^egon','egon my name is egon,egon is beautiful')) print(re.findall('egon$','egon my name is egon,egon is beautifulegon1')) # egon # 重复匹配 # .:匹配换行符以外的任意一个字符,(也可以用多个点,匹配多个任意字符) print(re.findall('a.c','abc a1c aac asd aaaaac a*c a+c abasd')) #['abc','a1c','aac','aac','a*c','a+c'] # a.c print(re.findall('a.c','abc a1c aac a\nc asd aaaaac a*c a+c abasd',re.DOTALL)) #re.DOTALL匹配所有任意字符,\n可以被匹配到 print(re.findall('a..c','abc a1c aac a\nc asd aaaaac a*c a+c abasd',re.DOTALL)) # []:匹配一个字符,该字符属于中括号内指定的字符,(可以缩小点的精度) print(re.findall('a..c','abc a1 c aac asd aaaaac a *c a+c abasd =')) print(re.findall('a.c','abc a1 c aac aAc aBc asd aaaaac a-c a/c a *c a+c abasd = a1c a2c')) print(re.findall('a[a-z]c','abc a1 c aac aAc aBc asd aaaaac a-c a/c a *c a+c abasd = a1c a2c')) print(re.findall('a[A-Z]c','abc a1 c aac aAc aBc asd aaaaac a-c a/c a *c a+c abasd = a1c a2c')) print(re.findall('a[-+*/]c','abc a1 c aac aAc aBc asd aaaaac a-c a/c a *c a+c abasd = a1c a2c')) print(re.findall('a[a-z][a-z]c','abc a1 c aac aAc aBc asd aaaaac a-c a/c a *c a+c abasd = a1c a2c')) print(re.findall('a[^a-z]c','abc a1 c aac aAc aBc asd aaaaac a-c a/c a *c a+c abasd = a1c a2c')) # *: 必须与其他字符连用,代表左侧的字符出现0次或者无穷次 print(re.findall('ab*','a ab abbb abbbb a1bbbb a-123')) # ab* #['a','ab','abbb','abbbb','a','a'] print(re.findall('ab{0,}','a ab abbb abbbb a1bbbb a-123')) # ?: 必须与其他字符连用,代表左侧的字符出现0次或者1次 print(re.findall('ab?','a ab abbb abbbb a1bbbb a-123')) # ab? #['a','ab','ab','ab','a','a'] print(re.findall('ab{0,1}','a ab abbb abbbb a1bbbb a-123')) # +: 必须与其他字符连用,代表左侧的字符出现1次或者无穷次 print(re.findall('ab+','a ab abbb abbbb a1bbbb a-123')) # ab+ # ['ab','abbb','abbbb'] print(re.findall('ab{1,}','a ab abbb abbbb a1bbbb a-123')) # {n,m}: 必须与其他字符连用,代表左侧的字符出现{n,m}次,完全可以取代*、?、+ print(re.findall('ab{1,3}','a ab abbb abbbb a1bbbb a-123')) # ab{1,3} # ['ab','abbb','abbb'] # .*:贪婪匹配(匹配不精准) print(re.findall('a.*c','ab123adfc1134124123adasfc123123')) # .*?:非贪婪匹配:推荐使用(爬虫经常用) print(re.findall('a.*?c','ab123adfc1134124123adasfc123123')) # a.*?c #():分组,可以结合非贪婪匹配,匹配网址,()不影响匹配的结果,最终取的是分组内的 print(re.findall('expression="(.*?)"','expression="1+2+3/4*5" egon="beautiful"')) # expression=".*?" print(re.findall('href="(.*?)"','<p>段落</p><a href="https://www.sb.com">点我啊</a><h1>标题</h1><a href="https://www.sb.com">点我啊</a>')) #|: #连接左右两个正则表达式,匹配一个成功即成功匹配 print(re.findall('a|b','ab123abasdfaf')) # a|b #先不看分组,先按照正常的进行匹配, print(re.findall('compan(?:ies|y)','Too many companies have gone bankrupt, and the next one is my company')) #companies company print(re.findall(r'a\\c','a\c a1c aAc aac')) print(re.findall('a\\\\c','a\c a1c aAc aac')) print(re.findall('ale(x)','alex is SB,alex is bigSB')) print(re.search('alex','alex is SB,alex is bigSB')) print(re.search('ale(x)','alex is SB,alex is bigSB').group()) print(re.search('abcdefg','alex is SB,alex is bigSB')) print(re.search('^alex','123alex is SB,alex is bigSB')) print(re.match('alex','123alex is SB,alex is bigSB')) l='egon:18:male'.split(':') print(l) l1=re.split('[ :/-]','a-b/c egon:18:male xxx') print(l1) print(re.sub('[a-z]+xx','yxp','lxx is good,sb is lllxx wxx is good cxx is good')) # [a-z]+xx pattern=re.compile('alex') print(pattern.findall('alex is SB,alex is bigSB')) print(pattern.search('alex is SB,alex is bigSB'))
python之基础知识大全
分类:
python模块
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?