pattern = “python [0-9].[0-9].[0-9]{2,}”
res = re.findall(pattern=pattern,string=re_str)
print(res)
[‘python 2.7.13’]
pattern = “python[0-9].[0-9].[0-9]{2,}”
res = re.findall(pattern=pattern,string=re_str)
print(res)
[]
re.findall() 方法,返回一个列表,如果匹配到的话,列表中的元素为匹配到的子字符串,如果没有匹配到,则返回一个空的列表
re_str = “hello this is python 2.7.13 and Python 3.4.5”
pattern = “python [0-9].[0-9].[0-9]”
res = re.findall(pattern=pattern,string=re_str,flags=re.IGNORECASE)
print(res)
[‘python 2.7.1’, ‘Python 3.4.5’]
设置标志flags=re.IGNORECASE,意思为忽略大小写
b、编译的方式使用正则表达式
我们一般采用编译的方式使用python的正则模块,如果在大量的数据量中,编译的方式使用正则性能会提高很多,具体读者们可以可以实际测试
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
re_str = “hello this is python 2.7.13 and Python 3.4.5”
re_obj = re.compile(pattern = “python [0-9].[0-9].[0-9]”,flags=re.IGNORECASE)
res = re_obj.findall(re_str)
print(res)
c、match方法
match方法,类似于字符串中的startwith方法,只是match应用在正则表达式中更加强大,更富有表现力,match函数用以匹配字符串的开始部分,如果模式匹配成功,返回一个SRE_Match类型的对象,如果模式匹配失败,则返回一个None,因此对于普通的前缀匹配,他的用法几乎和startwith一模一样,例如我们要判断data字符串是否以what和是否以数字开头
s_true = “what is a boy”
s_false = “What is a boy”
re_obj = re.compile(“what”)
print(re_obj.match(string=s_true))
<_sre.SRE_Match object; span=(0, 4), match=‘what’
print(re_obj.match(string=s_false))
None
s_true = “123what is a boy”
s_false = “what is a boy”
re_obj = re.compile(“\d+”)
print(re_obj.match(s_true))
<_sre.SRE_Match object; span=(0, 3), match=‘123’>
print(re_obj.match(s_true).start())
0
print(re_obj.match(s_true).end())
3
print(re_obj.match(s_true).string)
123what is a boy
print(re_obj.match(s_true).group())
123
print(re_obj.match(s_false))
None
d、search方法
search方法,模式匹配成功后,也会返回一个SRE_Match对象,search方法和match的方法区别在于match只能从头开始匹配,而search可以从字符串的任意位置开始匹配,他们的共同点是,如果匹配成功,返回一个SRE_Match对象,如果匹配失败,返回一个None,这里还要注意,search仅仅查找第一次匹配,也就是说一个字符串中包含多个模式的匹配,也只会返回第一个匹配的结果,如果要返回所有的结果,最简单的方法就是findall方法,也可以使用finditer方法
e、finditer方法
finditer返回一个迭代器,遍历迭代器可以得到一个SRE_Match对象,比如下面的例子
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
re_str = “what is a different between python 2.7.14 and python 3.5.4”
re_obj = re.compile(“\d{1,}.\d{1,}.\d{1,}”)
for i in re_obj.finditer(re_str):
print(i)
<_sre.SRE_Match object; span=(35, 41), match=‘2.7.14’>
<_sre.SRE_Match object; span=(53, 58), match=‘3.5.4’>
2、修改类方法介绍
a、sub方法
re模块sub方法类似于字符串中的replace方法,只是sub方法支持使用正则表达式,所以,re模块的sub方法使用场景更加广泛
re_str = “what is a different between python 2.7.14 and python 3.5.4”
re_obj = re.compile(“\d{1,}.\d{1,}.\d{1,}”)
print(re_obj.sub(“a.b.c”,re_str,count=1))
what is a different between python a.b.c and python 3.5.4
print(re_obj.sub(“a.b.c”,re_str,count=2))
what is a different between python a.b.c and python a.b.c
print(re_obj.sub(“a.b.c”,re_str))
what is a different between python a.b.c and python a.b.c
b、split方法
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算