正则表达式:
记录文本规则的代码
需导入模块re
单匹配
. 匹配任意一个字符(\n除外)
[] 匹配括号中任意一个字符
\d 匹配数字(0~9)
\D 匹配非数字
\s 匹配空格,tab
\S 匹配非空格
\w 匹配字符,字母、_、数字
\W 匹配非字符
多匹配
* 匹配前一个字符出现0次或无限次 (可有可无)
+ 匹配前一个字符出现1次或无限次
? 匹配前一个字符出现1次或0次
{m} 匹配前一个字符出现m次
{m,} 匹配前一个字符至少出现m次
{n,m} 匹配前一个字符出现n到m次
其他常用方法
- match(正则表达式, 匹配的字符串)
import re
res = re.match("python", "python.")
print(res)
输出:<re.Match object; span=(0, 6), match='python'>
- group() 提取正则表达式匹配的内容,提取未匹配的内容会报错
res = re.match("python", "python.")
print(res.group())
输出:python
- search(正则表达式,匹配的字符串) 从字符串中查找一次
res = re.search("\d+", "今天是11月12日")
print(res)
输出:<re.Match object; span=(3, 5), match='11'>
- 匹配开头 ^
- 匹配结尾 $
- | 匹配左右的表达式
- () 匹配括号中的内容,括号中的内容为一组
- (\num) 引用分组num匹配到字符串
- (?P) 分组起别名
10.(?P=name) 引用别名name分组匹配到的字符串 - findall(正则表达式, 匹配的字符串) 匹配字符串中所有符合表达式的数据
- sub(正则表达式,新字符串,旧字符串,指定的替换次数) (0默认是全局替换, 可省略)
- split(正则表达式, 字符串, 可指定分隔次数)