Python全栈 正则表达式(re模块正则接口全方位详解)
Posted parisgabriel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python全栈 正则表达式(re模块正则接口全方位详解)相关的知识,希望对你有一定的参考价值。
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 让元字符 . 能够匹配到
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)
以上是关于Python全栈 正则表达式(re模块正则接口全方位详解)的主要内容,如果未能解决你的问题,请参考以下文章
python 全栈 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)