re模块是Python的标准库模块
模块正则接口的整体模式
re.compile 返回regetx对象
finditer fullmatch match search 返回 match对象
match.属性|方法
re模块的使用:
regex = re.compile(pattern,flags = 0)
功能 :
生成正则表达式对象
参数 :
pattern 正则表达式
flags 功能标志位,丰富正则表达式的匹配
返回值:
返回一个正则表达式对象
re.findall(pattern,string,flags = 0)
功能 :
根据正则表达式匹配目标字串内容
参数 :
pattern 正则表达式
string 目标字符串
返回值:
列表 里面是匹配到的内容
如果正则表达式有子组,则只返回子组中的内容
regex.findall(string,pos,endpos)
功能 :
根据正则表达式匹配目标字串内容
参数 :
string 目标字符串
pos,endpos : 截取目标字符串的起止位置进行匹 配,默认是整个字符串
返回值:
列表 里面是匹配到的内容
如果正则表达式有子组,则只返回子组中的内容
re.split(pattern,string,flags = 0)
功能 :
通过正则表达式切割目标字符串
参数 :
pattern 正则
string 目标字串
返回值 :
以列表形式返回切割后的内容
re.sub(pattern,replace,string,max,flags)
功能:
替换正则表达式匹配内容
参数:
pattern 正则
replace 要替换的内容
string 目标字符串
max 设定最多替换几处
返回值 :
替换后的字符串
re.subn(pattern,replace,string,max,flags)
功能和参数同sub
返回值多一个实际替换了几处
re.finditer(pattern,string,flags)
功能:
使用正则匹配目标字串
参数:
pattern 正则
string 目标字串
返回值:
迭代对象 ----》 迭代内容为match对象
re.fullmatch(pattern,string,flags)
功能 :
完全匹配一个字符串
参数:
pattern 正则
string 目标字串
返回值:
match对象,匹配到的内容
re.match(pattern,string,flags)
功能 :
匹配一个字符串起始内容
参数:
pattern 正则
string 目标字串
返回值:
match对象,匹配到的内容
re.search(pattern,string,flags)
功能 :
匹配第一个符合条件的字符串
参数:
pattern 正则
string 目标字串
返回值:
match对象,匹配到的内容
regex 对象的属性
flags 标志位数值
pattern 正则表达式
groups 子组个数
groupindex 获取捕获组字典,键为组名值是第几组
match对象属性:
match.string 表示目标字符串的开始位置
match.pos 表示目标字符串的结束位置
match.re 表示对象生成正则表达式
match.endpos 目标字符串
match.lastindex 最后一个分组是第几组
match.lastgroup 最后一组的名称(捕获)
match对象方法:
match.span() 返回匹配到内容的开始结束位置元组
match.start() 返回匹配到内容的开始位置
match.end() 返回匹配到内容的结束位置
match.groups() 返回所有子组匹配到的内容
match.groupdict() 返回捕获组字典键:捕获名 值:内容
group(n=0)
功能:
获取match对象对应的匹配内容
参数:
默认为0 表示获取整体的匹配内容
如果赋值1,2,3。。。表示获取第n个子组匹配到的内容
返回值:
返回获取到的内容字串
# regex1.py
import re
pattern = r"(?P<dog>ab)cd(?P<pig>ef)"
# 生成正则表达式对象
regex = re.compile(pattern)
s = "abcdefghfkfdafsabcdefjsaavjhcabca"
# 获取mtach对象
obj = regex.search(s, 0, 8) # 设置开始位置结束位置
# print(len(s))
# match对象属性
print(obj.pos) # 目标字符串的开始位置
print(obj.endpos) # 目标字符串的结束位置
print(obj.re) # 正则表达式对象 re.compile('(?P<dog>ab)cd(ef)')
print(obj.string) # 目标字符串
print(obj.lastindex) # 最后一个分组是第几组
print(obj.lastgroup) # 最后一组的名称
# match对象方法
print(obj.span()) # 匹配到内容的起止位置
print(obj.start()) # 匹配到的内容开始位置
print(obj.end()) # 匹配到的内容结束位置
print(obj.groups()) # 所有子组匹配到的内容
print(obj.groupdict()) # 捕获组字典 键:捕获名 值:内容
print(obj.group())
print(obj.group(2))
# group(n=0)
# 功能:
# 获取match对象对应的匹配内容
# 参数:
# 默认为0 表示获取整体的匹配内容
# 如果赋值1,2,3。。。表示获取第n个子组匹配到的内容
# 返回值:
# 返回获取到的内容字串
flags参数:
re.compile
re.findall
re.search
re.match
re.finditer
re.fullmatch
re.split
re.sub
作用:
辅助正则表达式,扩展丰富的匹配内容、
regex = re.compile(r"Hello", re.I) # 忽略字母大小写
I == IGNORECASE 忽略字母大小写
S == DOTALL 让元字符 . 能够匹配到\n
M == MULTILINE 让元字符 ^ $ 能够匹配每一行的开头和结尾
X == VERBOOS 能够为正则添加注释
flags传递多个参数时可以用 按位或: | 链接
import re
# 忽略字母大小写
regex = re.compile(r'hello',re.I)
# l = regex.findall('hello Hello')
# print(l)
s = '''hello world
nihao Beijing'''
# 让.能够匹配换行符
l = re.findall(r'.+',s,re.S)
print(l)
# 匹配每一行
obj = re.search(r"world$",s,re.M)
print(obj.group())
# re自带注释方法
pattern = r"""(?P<dog>\w+) #dog组
\s+ #匹配任意多个空格
(\W+) #匹配一些特殊字符
"""
#添加注释同时忽略大小写
s = re.match(pattern,'hello %#@',re.X | re.I).group()
print(s)