一、正则元字符
字符 | 含义 |
---|---|
| | 逻辑或 |
. | 匹配任意一个字符 |
* | 匹配前边的字符出现0次或者任意次 |
+ | 匹配前边的字符出现1次或者任意次 |
? | 匹配前边的字符出现0次或1次 |
.* | 匹配任意字符 |
^ | 匹配以某字符或者字符串开头 |
$ | 匹配以某字符或者字符串结尾 |
[] | 匹配集合中的任意一个 |
[^] | 匹配除了集合中的内容 |
\d | 匹配任意数字字符 |
\D | 匹配任意非数字字符 |
\w | 匹配任意普通字符。指:数字、字符、下划线、汉字 |
\W | 匹配任意非普通字符 |
\s | 匹配空字符 指:空格 \r \n \t \f \v |
\S | 匹配非空字符 |
\b | 匹配单词边界 |
1.r的含义
r的含义是让字符串原样输出
2.没有r的字符串
data = "hello \nworld"
print(data)
结果如下:
hello
world
3.有r的字符串
data = r"hello \nworld"
print(data)
结果如下
hello \nworld
4.r对正则的影响
目前来讲r 对\b 是有影响的。如果在表达式前不加r,表达式中的\b是不起作用的。
import re
data = "123 zhang456san num789 111lisi"
res = re.findall(r"\b\d+\b",data)
print(res)
二、re模块的常用方法
模块名称 | 作用 |
---|---|
re.match() | 从字符串的起始位置开始匹配模式。 |
re.search() | 扫描整个字符串,返回第一个成功的匹配。 |
re.findall() | 查找字符串中所有匹配模式的子串,并返回一个列表。 |
re.sub() | 替换配置的字符串 |
1.re.match
从字符串的开始进行匹配
import re
data = "张无忌 周芷若 赵敏 张无忌2 灭绝师太 周芷若 白眉鹰王 金毛狮王"
res = re.match('周芷若',data)
if res:
print(res)
print(res.group())
else:
print(res)
print("匹配失败")
结果如下:
None
匹配失败
2.re.search
import re
data = "张无忌 周芷若 赵敏 张无忌2 灭绝师太 周芷若 白眉鹰王 金毛狮王"
res = re.search('周芷若',data)
if res:
print(res)
print(res.group())
else:
print(res)
print("匹配失败")
结果如下:
<re.Match object; span=(4, 7), match='周芷若'>
周芷若
3.re.findall
import re
data = "张无忌 周芷若 赵敏 张无忌2 灭绝师太 周芷若 白眉鹰王 金毛狮王"
res = re.findall('周芷若',data)
if res:
print(res)
else:
print(res)
print("匹配失败")
结果如下
['周芷若', '周芷若']
4.re.sub
import re
data = "张无忌 周芷若 赵敏 张无忌 灭绝师太 周芷若 白眉鹰王 金毛狮王"
res = re.sub(r'张无忌|...王',"",data)
print(res)