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)



相关文章
|
16天前
|
存储 缓存 JavaScript
python实战篇:利用request库打造自己的翻译接口
python实战篇:利用request库打造自己的翻译接口
29 1
python实战篇:利用request库打造自己的翻译接口
|
21天前
|
存储 开发者 Python
Python中的collections模块与UserDict:用户自定义字典详解
【4月更文挑战第2天】在Python中,`collections.UserDict`是用于创建自定义字典行为的基类,它提供了一个可扩展的接口。通过继承`UserDict`,可以轻松添加或修改字典功能,如在`__init__`和`__setitem__`等方法中插入自定义逻辑。使用`UserDict`有助于保持代码可读性和可维护性,而不是直接继承内置的`dict`。例如,可以创建一个`LoggingDict`类,在设置键值对时记录操作。这样,开发者可以根据具体需求定制字典行为,同时保持对字典内部管理的抽象。
|
3天前
|
数据挖掘 API 数据安全/隐私保护
python请求模块requests如何添加代理ip
python请求模块requests如何添加代理ip
|
5天前
|
测试技术 Python
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
|
5天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
37 1
|
7天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
44 0
|
8天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
9天前
|
SQL 关系型数据库 数据库
Python中SQLite数据库操作详解:利用sqlite3模块
【4月更文挑战第13天】在Python编程中,SQLite数据库是一个轻量级的关系型数据库管理系统,它包含在一个单一的文件内,不需要一个单独的服务器进程或操作系统级别的配置。由于其简单易用和高效性,SQLite经常作为应用程序的本地数据库解决方案。Python的内置sqlite3模块提供了与SQLite数据库交互的接口,使得在Python中操作SQLite数据库变得非常容易。
|
13天前
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
|
15天前
|
索引 Python
「Python系列」Python operator模块、math模块
Python的`operator`模块提供了一系列内置的操作符函数,这些函数对应于Python语言中的内建操作符。使用`operator`模块可以使代码更加清晰和易读,同时也能提高性能,因为它通常比使用Python内建操作符更快。
27 0