Python的回顾-7月31日

python中的正则表达式

一,定义
正则表达式又称规则表达式,是计算机科学的一个概念,通常用来检索和符合某些规则的文本,现在已经在各种计算机语言中得到广泛应用。

二,内容
1,行定位符
作用:用来描述字符串的边界。
符号:^与 分 别 表 示 行 的 开 始 与 结 尾 。 用 法 : 字 符 串 与 分别表示行的开始与结尾。 用法:^字符串与 字符串。

2,元字符
行定位符也是元字符,除此之外,还有以下几个元字符。
符号:"." 匹配除换行符以外的任何字符。
符号:\w 匹配字母,数字,下划线,汉字。
符号:\s 匹配任意的空白符。
符号:\d 匹配数字。
符号:\b 匹配单词的开始或结束。

3,重复
正则表达式提供了限定符,用与匹配特定数量的字符。
符号:? 匹配前面的字符零次或一次。
符号:+ 匹配前面的字符一次或多次。
符号:* 匹配前面的字符零次或多次。
符号:{n} 匹配前面的字符n次。
符号:{n,}匹配前面的字符至少n次。
符号:{n,m} 匹配前面的字符至少n次,最多m次。

4,字符类
用于匹配没有预定义元字符的字符集合。
方法:使用"[]"。
比如:[0-9]与\d的作用一样,都是匹配一个数字。
解读:匹配方括号里的任意一个字符。

5,排除字符
用于匹配不符合指定字符集合的字符串。
方法:[^指定字符串]

6,选择字符
符号:| 表示“或”。

7,转义字符
正则表达式中的\与python中的大同小异,都是将特殊字符如(,?)等变为普通的字符。
方法: \特殊字符。

8,分组
方法:使用小括号进行分组。
比如:the(m|y) 表示匹配them或they。

三,在python中的使用
在python中将正则表达式当作模式字符串来使用。
比如:’\bm\w*\b’ 表示匹配以m开头的单词,但是若要其变为模式字符串,则\需要进行转义。模式字符串:’\bm\w*\b’,这种太过繁琐,所以,我们在原生字符串(正则表达式)前加上r或R可以直接表示为模式字符串,比如:r’\bm\w*\b’。

四,使用re模板实现正则表达式操作
1,匹配字符串
方法一,使用match()
re.match(pattern,string,[flags])
patter:模式字符串
string:需要匹配的字符串对象
flags:标志位,用于控制匹配方式
标志位:
A 表示只进行Ascll匹配
I 表示不区分大小写的匹配
X 表示忽略模式字符串中未转义的空格与注释。

例如:

import re
pattern=r'mr_\w*'
string='mr_shop,Mr_shop'
match=re.match(pattern,string)
print(match)

结果:
在这里插入图片描述
方法二,使用search()
作用:在整个字符串的中搜索第一个匹配的值,成功返回结果,失败则返回none。
re.rearch(pattern,string,[flags])
pattern与string,flags都与match()相同。

import re
pattern=r'mr_\w*'
string='lr_shop Mr_shop'
match=re.search(pattern,string)
print(match)

结果:
在这里插入图片描述
方法三,使用findall()
在整个字符串中寻找所有符合的字符串,并以列表的形式返回,若没有符合的字符串,则返回空列表。
re.findall(pattern,string,[flags])
pattern与string与flags与前两者都相同。

import re
pattern=r'mr_\w*'
string='mr_shop1,Mr_shop'
match=re.findall(pattern,string,re.I)
print(match)

结果:
在这里插入图片描述

2,替换字符串
使用sub()函数
re.sub(pattern,repl,string,[count],[flags])
pattern:模式字符串
repl:要替换的新字符串
string:被替换的原始字符串
count:替换的最大次数
flags:标志位

import re
pattern=r'mr_\w*'
string='mr_shop1,Mr_shop'
result=re.sub(pattern,'boss',string)
print(result)

结果:
在这里插入图片描述

3,分割字符串
使用split()函数分隔字符串,并以列表的形式返回。
re.split(pattern,string,[maxsplit],[flags])
maxsplit:最大的拆分次数。

import re
pattern=r'mr'
string='mr_shop1,Mr_shop'
result=re.split(pattern,string,re.I)
print(result)

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值