找回密码
 会员注册
查看: 18|回复: 0

Python---re库的使用

[复制链接]

5

主题

0

回帖

16

积分

新手上路

积分
16
发表于 2024-9-4 14:15:54 | 显示全部楼层 |阅读模式
目录:一.re库简介二.match方法三.Match对象方法四.使用search()方法进行匹配五.使用findall()方法进行匹配六.使用sub()方法替换字符串七.使用split()方法分割字符串一.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()为结果字符串中最后一个字符的下标索引+1string属性:返回match对象的匹配字符串,在上面的例子中是“JuJingYi is a beauty”span():返回匹配位置的元组,即“(start(),end())”group():返回结果字符串,在上面的例子中是“JuJingYi”下面我们针对上面的例子,看一下运行效果吧:importrestring="JuJingYiisabeauty"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方法虽然在整个字符串中搜索,但是只返回第一个结果,如果有多个子字符串符合,那么只返回第一个下面是一个例子:importrestring="JuJingYiJuJingYi"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:可选参数,控制匹配方式,如:是否区分字母大小写、是否包括换行等等 下面是一个例子:importrestring="JuJingYiJuJingYi"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:可选参数,用于控制匹配模式 下面是一个例子:importrestring="JuJingYiJuJingYi"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:可选参数,用于控制匹配模式 一个例子如下:importrestring="姓名-张三,学历-硕士,性别-男"pattern=r"-|,"match=re.split(pattern,string,flags=re.I)print("结果是:",match)'运行运行结果:而如果没有匹配到,会返回一个只有“原字符串”一个元素的列表:importrestring="姓名-张三,学历-硕士,性别-男"pattern=r"###"match=re.split(pattern,string,flags=re.I)print("结果是:",match)'运行运行结果:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-30 02:53 , Processed in 0.907268 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表