匹配函数
re.match: 从字符串的起始位置匹配一个模式,如果不是则返回Nonere.search: 扫描整个字符串并返回第一个成功的匹配re.findall: 在字符串中找到正则表达式所匹配的所有子串, 并返回一个列表, 如果没有找到匹配,返回空列表[]re.finditer: 与findall类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
其他说明:
-
re.MatchObject: match和search一旦匹配成功就返回此对象,此对象有以下几种常用函数group()返回被RE匹配的字符串start()返回匹配开始的位置end()返回匹配结束的位置span()返回一个元组包含匹配(开始,结束)的位置
-
re.match与re.search的区别re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回Nonere.search匹配整个字符串,直到找到一个匹配
match search compile
import re
# 测试 match 函数 匹配的是开头的
print(re.match('\d{4}', "wq2345sfdssw2")) # None
# 测试 search 函数 匹配
print(re.search('\d{4}', "wq2345sfdssw2")) # <_sre.SRE_Match object; span=(2, 6), match='2345'>
# 测试compile函数 封装一个正则
pat = re.compile("^[1][3456789][0-9]{9}$")
# 匹配手机号
print(pat.match('15345689545')) # <_sre.SRE_Match object; span=(0, 11), match='15345689545'>
match object 对象
match 和 search 一旦匹配成功,就是一个match object对象,而该对象有一下几个方法:
- group() 返回被RE匹配的字符串
- start() 返回匹配开始的位置
- end() 返回匹配结束的位置
- span() 返回一个元组包含匹配(开始, 结束)的位置
import re
ob = re.match('\d+', '123sdsf')
print(ob) # <_sre.SRE_Match object; span=(0, 3), match='123'>
print(ob.group()) # 123
print(ob.span()) # (0, 3)
print(ob.start()) # 0
print(ob.end()) # 3
ob = re.search('\d+', '123sdsf')
print(ob.group()) # 123
查找函数 findall finditer
import re
str = "<ul><li>aaa</li><li>bbb</li><li>ccc</li></ul>"
data = re.findall("<li>(.*?)</li>", str)
for v in data:
print(v)
# 分别会输出
# aaa
# bbb
# ccc
分割函数
- 按照能够匹配的子串将string分割后返回列表
- 可以使用
re.split来分割字符串,如:re.split(r'\s+', text); 将字符串按空格分割成一个单词列表 - 格式:
re.split(pattern, string[,maxsplit])
import re
s = '2232322,2342;222:23'
dd = re.split("[^0-9]", s)
yy = re.split("[^0-9]", s, 2)
for v in dd:
print(v)
# 分别输出
# 2232322
# 2342
# 222
# 23
print(">>>>")
for i in yy:
print(i)
# 分别输出
# 2232322
# 2342
# 222:23
替换函数
-
sub- 使用
re替换string中每一个匹配的子串后返回替换后的字符串 - 格式:
re.sub(pattern, repl, string, count)
- 使用
-
subn- 返回替换次数
- 格式:
subn(pattern, repl, string, count=0, flags=0)
import re
# 将非零数字全部替换为空格
s = "12,22;2323:"
b = re.sub("[^0-9]", "", s)
c = re.subn("[^0-9]", "", s)
print(b) # 12222323
print(c) # ('12222323', 3) # 还返回了本次替换了几个值, 返回的是元组

本文深入探讨了Python中正则表达式的应用,包括re模块的主要函数:match、search、findall、finditer、split及sub等。通过实例演示了如何进行字符串匹配、查找、分割与替换,为读者提供了丰富的实践案例。
1381

被折叠的 条评论
为什么被折叠?



