目录
2.3 re.sub('匹配正则' , '替换内容' , 'string')
1、前言
1.1 什么是正则表达式
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。
1.2 正则的目的
- 数据挖掘
- 验证
- 指定一个匹配规则,从而识别该规则是否在一个更大的文本字符串中
- 正则表达式可以识别匹配规则的文本是否存在
- 还能将一个规则分解为一个或多个子规则,并展示每个子规则匹配的文本
1.3 正则表达式的优缺点
- 优点:提高工作效率、节省代码
- 缺点:复杂,难于理解
官方文档:re — Regular expression operations — Python 3.10.6 documentation
1.4 符号
- ? 匹配前一项0次或一次
- . 匹配任意一个除换行符以外的字符,占位符
- + 匹配前一项一次以上 1~n次
- * 匹配前一项任意次 0~n次
- {n,m} 匹配前一项n~m次
- {n,} 匹配前一项n次以上
- {,m} 匹配前一项0~m次
- {n} 匹配前一项n次
- ^ 开头
- $ 结尾
- \Axx 匹配以xx字符串开始
- \b 匹配词边界(字母数字中文都属于单词字符)
- \B 匹配非词边界
- \w 匹配单词字符
- \W 匹配非单词字符
- \d 匹配数字
- \D 匹配非数字
- \s 匹配空白
- \S 匹配非空白
2、re模块的基本用法
2.1 match与search 查找第一个匹配
2.1.1 re.search
查找匹配项,接受一个正则表达式和字符串,并返回发现的第一个匹配。如果完全没有找到匹配,re.search返回None。
import re
rest = re.search(r"san","hello san")
print(rest)
输出:
<re.Match object; span=(6, 9), match='san'>
2.1.2 re.match
从字符串头查找匹配项,接受一个正则表达式和字符串,从主串第一个字符开始匹配,并返回发现的第一个匹配。如果字符串开始不符合正则表达式,则匹配失败,re.match返回None。
match.group(default=0):返回匹配的字符串。
group是由于正则表达式可以分拆为多个只调出匹配子集的子组,0是默认参数,表示匹配的整个串,n 表示第n个分。
match.start():
start方法提供了原始字符串中匹配开始的索引。
match.end():
end方法提供了原始字符串中匹配开始的索引。
match.groups():
groups返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
import re
rest = re.match(r"san","hello san")
print(rest)
输出:
None
r'san' 中的r代表的是raw(原始字符串),原始字符串与正常字符串的区别是原始字符串不会将\字符解释成一个转义字符,正则表达式使用原始字符很常见且有用。
2.1.3 注意
re.match()函数只检测RE是不是在string的开始位置匹配,也就是说match()只有在0位置匹配成功的话才有返回, 如果不是开始位置匹配成功的话,match()就返回none, 不能和span()、group()搭配使用,否则会报错。以下的写法是错误的。
search()会扫描整个string查找匹配;search()可以不从0位置开始匹配,这就是和match()的区别。
参考文章: