正则表达式,听起来挺高大上,几乎所有的语言都有这个内容,python中是用re模块,接下来先介绍下什么是正则表达式,比如你要从一大串字符串中提取出你要的信息,www.baidu.com www.youtube.com,你要从中提取出baidu,youtube等字符串,怎么办呢,首先来分析它的结构,不难看出,这些字符串前面是www,后面是.com,中间就是我们要的部分,因此我们可以写一个这样的表达式
p=r'www\.(.+?)\.com' 其中的\.是为了转义.,.在正则表达式中是通配符,可以匹配任何字符,这个表达式就可以匹配如www.baidu.com,www.sina.com这样的字符串了,那中间的(.+?)是什么意思呢,()代表的是第几个子模式,比如(0(1)(2)),其中的数字就代表第几个子模式,其实非常容易理解,就看左边有多少个(就可以,如果没有(,就默认为1,用一个()把所有的字符串包裹住,那现在我们的子模式1中就是baidu,sina等内容了,那这个?是什么意思呢,代表非贪婪模式,就是尽可能少匹配,一遇到后面是.com就停止匹配。说了这么多,上代码。
import re #导入re模块
s=r'www.baidu.com www.youtube.com'
pat=r'www\.(.+?)\.com'
p=re.compile(pat) #预编译正则表达式,下次使用可以缩短时间
m=re.match(pat,s) #匹配s的开头的字符串,返回matchobject对象,如果是search()就是匹配所有的字符串
print(m.group(1)) #打印第一个子模式的内容,指定了1,不指定就默认为0
print(m.groups()) #打印所有子模式的内容,返回一个元组,
print(re.findall(pat,s)) #打印出所有正则表达式匹配了字符串的内容,上面的是只匹配第一个,这个是匹配所有的
结果如下:
baidu
('baidu',)
['baidu', 'youtube']
正则表达式的匹配规则:. 匹配所有内容,若想匹配它本身(一个点符号),r'\.' 转移即可,[ a-z]字符集,匹配a-z的任意字母,其实就是任意一个小写字母,大写就是[A-Z],[^a-z ] 匹配非小写字母,^就是非,r'^ a b$’,^开头为a,$结尾为b,\w匹配字母和数字,\d匹配数字,\r匹配空格,\t匹配tab
还有很多匹配规则,这里只列出常用的,具体可以查看官方文档多练习
【推荐】国内首个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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架