Python全栈 正则表达式(re模块正则接口全方位详解)

时间:2021-02-28 22:37:28

re模块是Python的标准库模块

 

模块正则接口的整体模式

 

re.compile 返回regetx对象

 

finditer fullmatch match search 返回 match对象

 

match.属性|方法

Python全栈 正则表达式(re模块正则接口全方位详解)

 

 

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)