正则表达式的简单使用

本文详细介绍了Python的re库,重点讲解了search()、findall()和sub()三个函数的使用。search()函数在字符串中查找匹配的第一个位置,findall()返回所有匹配的子串,sub()则用于替换匹配的子串。通过实例展示了这些函数的运用,帮助读者更好地理解和应用正则表达式。
摘要由CSDN通过智能技术生成

写在前面:正则表达式,可以理解为一种规则或者参照对象,就是一种模板,就像别人家的孩子一样,你得和它(正则表达式)一样。正则表达式的使用非常广泛,例如,对于用户输入密码的下划线,字母,数字的判断。下面正式开始

1、re库的引入

import re

(1)re库主要函数

re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match() 从一个字符串的开始位置起匹配正则表达式,返回match对象
re.findall() 搜索字符串,以列表类型返回全部能匹配的字符
re.spilt() 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub() 在一个字符串中替换匹配所有匹配正则表达式的子串,返回替换后的字符串

在这里,我们主要对其中的search()、findall()、sub()进行说明

2、上述三种函数说明

(1)search函数

a、有模式对象

利用search方法进行对比查找

创建模式对象
pat = re.compile("AA") #此处的AA,是正则表达式,用来验证其他的字符串
m = pat.search("CBA") #search字符串:被校验的内容
print(m)

运行结果

D:\program\python\python\python.exe D:/program/python/douban/test/testre.py
None

进程已结束,退出代码0

我们看到,返回的结果是none,是因为在被校验的字符串中没有模式对象“AA”,所以返回none

这次我们给一个包含“AA”的

pat = re.compile("AA")
m = pat.search("CBACAA")
print(m)

结果

D:\program\python\python\python.exe D:/program/python/douban/test/testre.py
<re.Match object; span=(4, 6), match='AA'>

进程已结束,退出代码0

可以看到返回结果,注意这个区间(4,6),python中的区间通常都是左闭右开,所以这个区间表示的是第四第五,也就是我们被参照字符串的第四第五

再举一个例子

pat = re.compile("AA")
m = pat.search("AABCCNADFJAAAA")  #利用search方法进行对比查找
print(m)

运行结果

D:\program\python\python\python.exe D:/program/python/douban/test/testre.py
<re.Match object; span=(0, 2), match='AA'>

进程已结束,退出代码0

返回的结果是(0,2),这是前面的两个“AA”,后面的四个"AAAA"是没有被匹配进去的,因为它是不符合条件的

b、无模式对象

m = re.search("asd","Aasd")      #前面的字符串是规则(模板),后面的字符串是被校验的对象
print(m)

结果

D:\program\python\python\python.exe D:/program/python/douban/test/testre.py
<re.Match object; span=(1, 4), match='asd'>

进程已结束,退出代码0

(2)、下面我们用findall()函数,以列表的形式返回所有能匹配到的字符串

print(re.findall("[A-Z]","asdsADFAVSDAa"))
print(re.findall("[A-Z]+","asdsADFAVSDAa"))       #前面字符串是规则(正则表达式),后面表达式是被校验的字符串

结果

D:\program\python\python\python.exe D:/program/python/douban/test/testre.py
['A', 'D', 'F', 'A', 'V', 'S', 'D', 'A']
['ADFAVSDA']

进程已结束,退出代码0

第一行代码以列表形式返回了所有的大写字母

第二行代码返回的是连续的大写 

两者的区别在于【A-Z】后面有无“+”号,如果有,则打印全部的字符串连续输出,反之,则以列表间隔输出

(3)、sub()函数,主要起到替换、分隔的作用

print(re.sub("a","A","asdsa"))   #找到a用A替换,在第三个字符串中查找,其实就是在第三个字符串中把所有的“a”换成“A”

结果

D:\program\python\python\python.exe D:/program/python/douban/test/testre.py
abd-'

进程已结束,退出代码0
D:\program\python\python\python.exe D:/program/python/douban/test/testre.py
AsdsA

进程已结束,退出代码0

最后,来个小tip|

在键盘上打印字符串的时候,难免会遇到这样一个问题,打字时你打印的 "\"后面会接着一个字符什么的,从而连起来,变成转义字符,造成识别不出来等问题,有一个很好的解决办法,在前面加一个“r”

使用前

---------------------------------------------------------------------------------------------------------------------------------

a = "\aabd-\'"
print(a)
D:\program\python\python\python.exe D:/program/python/douban/test/testre.py
abd-'

进程已结束,退出代码0

---------------------------------------------------------------------------------------------------------------------------------

使用后

---------------------------------------------------------------------------------------------------------------------------------

a =r"\aabd-\'"
print(a)
D:\program\python\python\python.exe D:/program/python/douban/test/testre.py
\aabd-\'

进程已结束,退出代码0

--------------------------------------------------------------------------------------------------------------------------------

完美解决。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值