Python---【re库的使用】

目录:

一.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()为结果字符串中最后一个字符的下标索引+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)

结果:

  • 28
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是洋洋a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值