正则表达式(学习))"/>
python(正则表达式(学习))
python(正则表达式(学习))
前面的博客是复习,这篇文章属于学习,因为前面的知识点我学过,只是温故而知新,而正则表达式,我是没有学习过,因此是学习,这里当博客为一个笔记本,会的同学跳过,不会的,我们一起学习。let‘s go!
定义:正则表达式也称为规则表达式,是用来查找或撒选满足某种规则(模式)的数据,所以说,使用正则表达式是让计算机代替人力去批量处理(查找或撒选)数据。
在python使用re模块,进行正则表达式使用
import re
注意自己在网上搜索一下正则表达式相关的符号与含义
符号 含义
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串开始位置
$ 匹配字符串结束位置
I 匹配时忽略大小
M 多行匹配
U 根据Unicode字符及解析字符
…
其余自己查找,用的时候查即可,不用一个个记住,但是可以先看看有哪些符号和含义,后面使用起来比较方便(关键是知道如何查找)
1.原子
原子是正则表达式中的最基本的单位
每个表达式都会包括至少一个原子,常见的原子有以下几种类型
1)普通字符作为原子
2)非打印字符作为原子
3)通用字符作为原子
4)原子表
注意正则表达式只是表达式,没有任何功能,所以需要通过相关的函数进行实现。
1)普通字符作为原子在此可以使用search()函数进行查找和匹配。使用格式如下import restring="tiaoyunjiaoyu"pat="yun"rst=re.rearch(pat,string)print(rst)
如下所示:
import re
string=“zhugekongminglu”
pat=“kongming”
rst=re.search(pat,string)
print(rst)
运行结果如下:
<_sre.SRE_Match object; span=(5, 13), match=‘kongming’>
汉字也是可以以同样的方式进行实现
import re
string=“诸葛孔明庐”
pat=“孔明”
rst=re.search(pat,string)
print(rst)
<_sre.SRE_Match object; span=(2, 4), match=‘孔明’>
2)非打印字符作为原子常见的非打印字符主要有两种1.\n 2.\timport re
string=“taioyunji8 7362387aoyubaidu”
pat="\w\d\s\d\d"
rst=re.search(pat,string)
print(rst)
<_sre.SRE_Match object; span=(8, 13), match=‘i8 73’>
2.元字符
. 除换行符以外的任意字符
中间一个字符
import re
string=“what’s the time?”
pat1=“t.e”
rst1=re.search(pat1,string)
print(“rst1:”+str(rst1))
rst1:<_sre.SRE_Match object; span=(7, 10), match=‘the’>
#加上group()可以将需要的结果直接输出
import re
string=“what’s the time?”
pat1=“t.e”
rst1=re.search(pat1,string)
print(rst1.group())
执行结果:the
中间两个字符
import re
string=“what’s the time?”
pat1=“t…e” # 中间两个字符…
rst1=re.search(pat1,string)
print(rst1.group())
执行结果:time
3.贪婪模式与懒惰模式
使用贪婪模式会尽可能多的进行匹配,但是这样一来结果是最不精确地;而使用懒惰模式,尽管匹配的数量比较少,但是这样一来,匹配的精确度就相当高,因此根据实际情况,来选择到底使用哪种模式进行匹配。
1)贪婪模式
import re
string=“what’s the time?”
pat1=“h.*e”
rst1=re.search(pat1,string)
print(rst1.group())
2)懒惰模式
import re
string=“what’s the time?”
pat1=“h.*?e”
rst1=re.search(pat1,string)
print(rst1.group())
4.模式修正符
###修正模式
1)大小写修正模式
import re
string=“Why are you want to learn Python?”
pat1=“p.*?n”
rst1=re.search(pat1,string)
rst2=re.search(pat1,string,re.I) #不区分大小写进行修正模式匹配
print(“rst1:”+str(rst1))
print(“rst2:”+str(rst2.group()))
执行结果如下:
rst1:None
rst2:Python
通过修正模式以后,再次进行匹配的时候就不会进行大小写之分,因此能够完美查找出所需要的信息。
2)多行匹配修正模式
###修正模式
import re
string=’’‘Why are you want
to learn Python?’’’
pat1=“a.*?l”
rst1=re.search(pat1,string)
rst2=re.search(pat1,string,re.S) #多行修正模式匹配
print(“rst1:”+str(rst1))
print(“rst2:”+str(rst2.group()))
5.正则表达式函数
正则表达式是静态的,是一种规则,其本身是不具备功能的,所以匹配数据的时候,需要用正则表达式函数实现对应的匹配功能。
更多推荐
python(正则表达式(学习))
发布评论