目录
re模块
compile(pattern, flags=0)
flag匹配模式
match(pattern, string, flags=0)
search(pattern, string, flags=0)
findall(pattern, string, flags=0)
split(pattern, string, maxsplit=0, flags=0)
sub(pattern, repl, string, count=0, flags=0)
---------------------------------------------------------------------------------------------
re模块
1下载re模块
![](https://img-blog.csdnimg.cn/c34148fb4a0a4eaab9c0ec41c76bd93d.png)
2导入模块
import re
3 语法
re模块相当于是一个语言模块,拥有自己的语言规则,是爬虫的数据爬取进行数据的提取的三大模块(re xpath bs4 ) 之一,下面介绍re的语法的一些标识符:
(1)匹配单个字符
![](https://img-blog.csdnimg.cn/9a16006d0ede4f998b9b89258e23be8c.png)
(2)匹配多个字符
![](https://img-blog.csdnimg.cn/1dfbbc44f9b6429fb1fe6ff34df41f1a.png)
补充一点:使用多字符就会使正则表达式变成贪婪,多字符标记加上个?就会使正则表达式变成非贪婪,下面会有介绍
(3)匹配开头结尾
![](https://img-blog.csdnimg.cn/527926ae24e04516a8489d33c98567c7.png)
(4)匹配分组
![](https://img-blog.csdnimg.cn/671ce960f0b74c0c9fd618aac21744ab.png)
re.match()
match(pattern, string, flags=0)===>match("正则表达式", 拿来匹配的字符串, 匹配方式)
(1)简单介绍
match(pattern, string, flags=0)===>match("正则表达式", 拿来匹配的字符串, 匹配方式)
这样解释可能一点不友好,下面开始使用match()
(1)使用单字符" . "
![](https://img-blog.csdnimg.cn/160315fed8cc4239bd3edd1371fa658a.png)
现在由我来解释
match()是re里的函数,match利用正则表达式来跟字符串匹配,从头开始匹配,
可以理解为正则表达式有啥,字符串的开头就必须有,
![](https://img-blog.csdnimg.cn/e09c72aa703840c894d3bb21c40cdf21.png)
没有就会报错,如下图:
![](https://img-blog.csdnimg.cn/68336a569db7405392d7186fa74fd6d5.png)
group()是报错的主犯,当match匹配不到时,会返回None,正因group()拿不到匹配到的字符就会报错
group()返回匹配到的字符
flag匹配模式
![](https://img-blog.csdnimg.cn/271d78947a0043e984ef98d4b9b36ecd.png)
下面我们简单介绍re.S和re.I
re.I 不区分大小写
![](https://img-blog.csdnimg.cn/ae2c7115e56c42f0bc32df87033bd7ee.png)
re.S 可以换行匹配
![](https://img-blog.csdnimg.cn/dc0d2bfc18484390a200ca0f2d93e8c1.png)
search(pattern, string, flags=0)===>search("正则表达式", 拿来匹配的字符串, 匹配方式)
search()的匹配原理是在字符串中找到符合正则表达式的字符就立刻返回,(就是找到第一个就会返回)
![](https://img-blog.csdnimg.cn/c5c9f1bdde5f4034b653a0216cd7f741.png)
findall(pattern, string, flags=0)===>findall("正则表达式", 拿来匹配的字符串, 匹配方式) (直接返回所有匹配到的字符)
![](https://img-blog.csdnimg.cn/178f715842b842cfad6e9b074aa41cef.png)
findall()和前面的match() search()不同,findall是直接把所有匹配到的字符以列表返回
split(pattern, string, maxsplit=0, flags=0)===>split("正则表达式", 拿来匹配的字符串,最大切割数, 匹配方式)
split就是把匹配到的字符切割(可以理解为去掉字符) ,返回切割后的字符串,和前面不同,前面是返回匹配到的,
![](https://img-blog.csdnimg.cn/d5453a3081d54c7596a3cc9ebba3f9a5.png)
sub(pattern, repl, string, count=0, flags=0)===>findall("正则表达式",替换的字符, 拿来匹配的字符串, 匹配方式)
sub()和findall()的匹配类似都是匹配到全部符合的,唯一不同的就是会把匹配到的字符进行替换
![](https://img-blog.csdnimg.cn/1a402f0407cc42fd925da5a4c1dfb6ea.png)
总结
以上的方法都是为了更好的匹配字符串,灵活性高,操作性强
简单练习