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

简介: re模块 Python Python re模块 re模块正则接口全方位详解 Python正则基础

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)



相关文章
|
17天前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
33 4
|
14天前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
101 63
|
16天前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
16天前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
22天前
|
JSON Linux 数据格式
Python模块:从入门到精通,只需一篇文章!
Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。
Python模块:从入门到精通,只需一篇文章!
|
17天前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
29 5
|
16天前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
26天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
41 5
|
20天前
|
JavaScript 前端开发 Python
python中的OS模块的基本使用
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。博客分享前端技术及全栈开发经验,持续更新中,期待您的关注和支持!🎉🎉🎉
28 0
|
20天前
|
JavaScript 前端开发 Python
python中的platform模块的基本使用
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。博客分享前端技术,助你成长。关注我,持续更新中!🎉🎉🎉
20 0