python(正则表达式(学习))

python(正则表达式(学习))

前面的博客是复习,这篇文章属于学习,因为前面的知识点我学过,只是温故而知新,而正则表达式,我是没有学习过,因此是学习,这里当博客为一个笔记本,会的同学跳过,不会的,我们一起学习。let‘s go!

定义:正则表达式也称为规则表达式,是用来查找或撒选满足某种规则(模式)的数据,所以说,使用正则表达式是让计算机代替人力去批量处理(查找或撒选)数据

在python使用re模块,进行正则表达式使用
import re
注意自己在网上搜索一下正则表达式相关的符号与含义
符号 含义
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串开始位置
$ 匹配字符串结束位置
I 匹配时忽略大小
M 多行匹配
U 根据Unicode字符及解析字符

其余自己查找,用的时候查即可,不用一个个记住,但是可以先看看有哪些符号和含义,后面使用起来比较方便(关键是知道如何查找)

1.原子
原子是正则表达式中的最基本的单位
每个表达式都会包括至少一个原子,常见的原子有以下几种类型
1)普通字符作为原子
2)非打印字符作为原子
3)通用字符作为原子
4)原子表
注意正则表达式只是表达式,没有任何功能,所以需要通过相关的函数进行实现。

 1)普通字符作为原子
 
 在此可以使用search()函数进行查找和匹配。使用格式如下
 import re
 string="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.\t
 

 import 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.正则表达式函数
正则表达式是静态的,是一种规则,其本身是不具备功能的,所以匹配数据的时候,需要用正则表达式函数实现对应的匹配功能。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值