re库使用教程(正则表达式详解)

re

Python中使用正则表达式需要用到re库
re为Python的标准库,无需另外安装, 只需导入即可

import re

正则表达式的表示类型

  1. raw string 类型(原生字符串类型) 例如:r’[1-9]\d{5}’
  2. string 类型,(将斜杠表示为转义字符) 例如 :‘[1-9]\\d{5}’

正则表达式的常用操作符

操作符说明实例
.匹配除换行符\n外的任意单个字符正则表达式a.c 在字符串abcde中匹配到abc
\表示位于\之后的为转义字符正则表达式a.c 在字符串a.cbe中匹配到a.c
[ ]字符集,对单个字符给出取值范围[abc]表示a、b、c、[a-z]表示a到z单个 字符
[^]非字符集,对单个字符给出排出范围[^abc]表示非a或b或c的单个字符
*前一个字符0此或无限次扩展abc*表示ab,abc,abcc等
+前一个字符1次或无限次扩展abc+表示abc,abcc等
前一个字符0次或1次扩展abc?表示ab,abc
|匹配位于| 之前或之后的字符abc|def表示abc或者def
{m}扩展前一个字符m次ab{2}c表示abbc
{m,n }扩展前一个字符m到n次(含n)ab{1,2}c表示abc,abbc
^匹配字符串开头^abc表示abc且在一个字符串的开头
$匹配字符串结尾abc$ 表示abc且在一个字符串的结尾
()分组标记,内部只能使用“或”操作符(abc)表示abc,(abc|def)表示abc或def
\d数字,等价于[0-9]
\D与\d含义相反 等价于 [^0-9]
\s任意一个空白字符
\S任意一个非空白字符
\w1位数字字母或下划线,等价于[A-Za-z0-9_]
\W等价于[^A-Za-z0-9_]

常用函数

①re.match(pattern,string ,flags=0)
函数作用: 尝试从字符串的起始位置匹配一个模式,若匹配成功则返回一个匹配对象;否则返回None
pattern:正则表达式的字符串
string:待匹配字符串
flags:正则表达式使用时的控制标记

标记值说明
re.I忽略正则表达式的大小写,即对大小写不敏感,[A-Z]能够匹配小写字符
re.M多行匹配,影响^和$
re.S匹配包括换行符在内的所有字符

匹配对象函数说明
group(0)返回包含整个表达式的字符串
group(n1,n2,n3,…)返回包含多个组号对应的元素的元组
group()返回一个包含所有小组字符串的元组
groupdict()返回一个包含所有经命名匹配小组的字典
str="0086-010-88668866"
mat=re.match(r"(?P<nation>\d{4,})-(?P<zone>\d{3,})-(?P<number>\d{8,})",str)
print("group(1,2,3):",mat.group(1,2,3))
print("groupdict:",mat.groupdict())
'''
group(1,2,3): ('0086', '010', '88668866')
groupdict: {'nation': '0086', 'zone': '010', 'number': '88668866'}
'''

②re.search(pattern,string ,flags=0)
函数作用:和re.match()用法相同

③re.findall(pattern,string ,flags=0)
函数作用:搜索字符串,以列表类型返回全部匹配的子串

④ re.splite(pattern,string ,maxsplit,flags=0)
函数作用: 将一个字符串按照正则表达式匹配结果分割,返回列表类型
maxsplit:最大分割数,剩余部分作为最后一个元素输出

⑤re.finditer(pattern,string ,flags=0)
函数作用:搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象

⑥re.sub(pattern,repl,string ,count=0,flags=0)
函数作用: 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

re库的另一种等价用法

re.compile(pattern,flags=0)
pattern:正则表达式的字符串
lags:正则表达式使用时的控制标记

pat=re.compile('[1-9]\d{5}')
rst=pat.search('BIT 100081') # 这里的search可以换成上面的任何一个函数
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

千禧皓月

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

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

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

打赏作者

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

抵扣说明:

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

余额充值