python正则表达式

本文介绍了Python中正则表达式的使用。包括原始字符串声明,re.search、re.match等匹配方法,多个匹配的re.findall和re.finditer,字符组、区间、取反等规则,还有快捷方式、可选字符、分组、先行断言、标记、替换以及已编译的正则表达式等内容。

正则表达式:通过寻找模式匹配文本的工具
r开头引起的字符串就是声明了后面引号里的东西是原始字符串,在里面放任何字符都表示该字符的原始含义。
re.search接受一个字符串和一个正则表达式,返回第一个发现的匹配,没有则返回None:
re.match:接受一个字符串和一个正则表达式,仅仅从字符串第一个开始匹配。
在这里插入图片描述
当想匹配字符串时,最好使用re.search
多个匹配
re.findall:返回一个列表
re.finditer:返回一个生成器
在这里插入图片描述
注意:没有实际返回一个match对象,而是根据正则表达式的内容以字符串或元组的形式返回匹配自身
字符组
使用方括号列出所有可能的的字符从而表示一个字符组
在这里插入图片描述
注意:字符组仅仅匹配一个字符
区间
在字符组中使用-连接字符代表区间([a-z]表示只匹配小写字符)
取反(^)
反转字符组(即:只匹配除指定字符之外的其他字符)
在这里插入图片描述
快捷方式
\d:匹配数字字符
\w:与任意单词字符匹配
\s:匹配空白字符
\b:匹配一个长度为0 的子串,在一个单词的结尾或者开始匹配。
在这里插入图片描述
^:字符的开始
.:代表单个的任意字符,只能出现在方括号字符组之外
可选字符
?:指定一个字符、字符组,该字符可以出现零次或者一次
{N}:指定一个标记必须重复给定次数
{M,N}:M是下界,N是上界(边界时包含性的)
{M,N}?:尽可能少的返回匹配(?本质上时{0,1}的别名)
{1,}:指定出现一次或者多次
{,}:下界假定为0
+:一个或者多个
*:0个或者多个
分组(可使用圆括号指定分组)
group:返回完整的匹配
groups:返回单个分组的元组(分组编号从1开始)
命名分组
语法(?P<第一个分组名>[\d]{3})-(?P<第二个分组名>[\d]{4})
groupdict方法:返回一个字典,键对应分组名称
先行断言
先行断言:基于之后的内容是否存在接受或拒绝一个匹配,而不需要接下来的内容作为匹配的一部分
取反先行断言的语法:n(?!e)
取反先行断言仅仅返回字符n
正向先行断言语法:n(?=e)
标记
re.IGNORECASE:不区分大小写
re.UNICODE:强制正则表达式遵照python3的行为
re.ASCII:强制正则表达式遵照python2的行为
re.DOTALL:除了匹配其他字符之外,还匹配换行符(贪心)
re.MULTILINE:使”^“和“$”可以匹配任意行的开始和结束
可以使用|操作符来使用多个标记
替换
re.sub(正则表达式,用于替换的字符串,被搜索的原始字符串)
已编译的正则表达式
re.compile返回一个正则表达式的对象,该对象的正则表达式以数据形式存在,可被复用,这些对象都有自己的search和sub方法,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值