首页 > Python资料 博客日记
Python---【re库的使用】
2024-08-08 12:00:05Python资料围观73次
目录:
一.re库简介
re库是Python用来实现“正则表达式”的库,并且re库在Python中内置,无需使用pip安装
re库提供了:“match”、“search”、“findall”三种基本搜索模式,以及“sub”一种替换模式,“split”一种分割模式
二.match方法
match()方法从“字符串的开始处”进行匹配,如果在起始位置匹配成功,返回Match对象,否则返回None
语法格式如下:
re.match(pattern,string,flags)
参数说明:
- pattern:表示模式字符串,由正则表达式转换而来
- string:表示要匹配的字符串
- flags:可选参数,控制匹配方式,如:是否区分字母大小写、是否包括换行等等
所有标志位如下:
标志 | 说明 |
re.A或re.ASCII | 对于\w、\W、\b、\B等特殊转义字符进行ASCII匹配 |
re.I或re.IGNORECASE | 不进行大小写匹配 |
re.M或re.MULTILINE` | 将^和$用于包括整个字符串的开始和结尾的每一行 |
re.S或re.DOTALL | 使用(.)字符匹配所有字符 |
re.X或re.VERBOSE | 忽略模式字符串(pattern)中未转义的空格和注释 |
我们先来看一下match的使用:
在上面的例子中,没有匹配到任何结果,是因为match从字符串的第一个字符开始匹配,如果第一个字符就不符合就会结束匹配并返回None,而我们不指定“re.I”时,默认是进行大小写匹配的
如果我们使用“re.I”结果如下:
可以看到,匹配到了字符串“JuJingYi”
三.Match对象方法
在上使用match匹配时,返回的match对象具有多种方法供我们使用:
- start():返回结果字符串的起始位置
- end():返回结果字符串的终止位置,end()为结果字符串中最后一个字符的下标索引+1
- string属性:返回match对象的匹配字符串,在上面的例子中是“JuJingYi is a beauty”
- span():返回匹配位置的元组,即“(start(),end())”
- group():返回结果字符串,在上面的例子中是“JuJingYi”
下面我们针对上面的例子,看一下运行效果吧:
import re
string = "JuJingYi is a beauty"
pattern = r"ju\w+"
match = re.match(pattern,string,re.I)
print("结果字符串的开始位置是:",match.start())
print("结果字符串的结束位置是:",match.end())
print("要匹配的字符串是:",match.string)
print("结果字符串的位置元组是:",match.span())
print("结果字符串是:",match.group())
效果:
四.使用search()方法进行匹配
search()方法用于在整个字符串中搜索第一个匹配的值,如果匹配成功,返回Match对象,否则返回None
语法如下:
re.search(pattern,string,flags)
参数说明:
- pattern:表示模式字符串,由正则表达式转换而来
- string:表示要匹配的字符串
- flags:可选参数,控制匹配方式,如:是否区分字母大小写、是否包括换行等等
注意:search方法虽然在整个字符串中搜索,但是只返回第一个结果,如果有多个子字符串符合,那么只返回第一个
下面是一个例子:
import re
string = "JuJingYi JuJingYi"
pattern = r"ju\w+"
match = re.match(pattern,string,re.I)
print("结果字符串的开始位置是:",match.start())
print("结果字符串的结束位置是:",match.end())
print("要匹配的字符串是:",match.string)
print("结果字符串的位置元组是:",match.span())
print("结果字符串是:",match.group())
结果:
五.使用findall()方法进行匹配
findall()方法在“整个字符串”中搜索“所有符合”匹配模式的字符串,并以“列表”的形式返回结果,如果没有匹配到结果,则返回空列表:
语法如下:
re.findall(pattern,string,flags)
参数说明:
- pattern:表示模式字符串,由正则表达式转换而来
- string:表示要匹配的字符串
- flags:可选参数,控制匹配方式,如:是否区分字母大小写、是否包括换行等等
下面是一个例子:
import re
string = "JuJingYi JuJingYi"
pattern = r"ju\w+"
match = re.findall(pattern,string,re.I)
print("结果字符串是:",match)
结果:
值得注意的是:findall()方法返回的是一个列表,不是一个Match对象,自然没有“start()、end()、string、span()、group()”方法了
六.使用sub()方法替换字符串
sub()方法用于实现字符串替换,并且返回一个“替换后”的字符串
语法格式如下:
re.sub(pattern,repl,string,count,flags)
参数说明:
- pattern:模式字符串
- repl:要替换的字符串
- string:原始字符串
- count:可选参数,表示替换次数,默认值为0表示全部替换
- flags:可选参数,用于控制匹配模式
下面是一个例子:
import re
string = "JuJingYi JuJingYi"
pattern = r"ju\w+"
repl = "Beauty"
match = re.sub(pattern,repl,string,0,re.I)
print("替换前的字符串是:",string)
print("替换后的字符串是:",match)
结果:
七.使用split()方法分割字符串
re.split()方法根据“匹配模式”实现分割字符串,跟字符串中的“split”是不一样的!
结果以列表的形式返回,如果没有匹配到会返回“原字符串”(在列表中)
语法如下:
re.split(pattern,string,maxsplit,flags)
参数说明:
- pattern:模式字符串
- string:原始字符串
- maxsplit:最大分割次数
- flags:可选参数,用于控制匹配模式
一个例子如下:
import re
string = "姓名-张三,学历-硕士,性别-男"
pattern = r"-|,"
match = re.split(pattern,string,flags=re.I)
print("结果是:",match)
结果:
而如果没有匹配到,会返回一个只有“原字符串”一个元素的列表:
import re
string = "姓名-张三,学历-硕士,性别-男"
pattern = r"###"
match = re.split(pattern,string,flags=re.I)
print("结果是:",match)
结果:
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj