出品:Python数据之道(ID:PyDataLab)
作者:Peter,来自读者投稿
编辑:Lemon
玩转正则表达式
本文中介绍的是主要是 3 个知识点:
- 正则表达式的相关知识
Python的中re模块,主要是用来处理正则表达式- 一个利用
re模块通过正则表达式来进行网页数据的爬取和存储
使用的系统 Python 版本和其他环境分别如下:
- npython 3.7.5
- MacOS
- jupyter notebook
- re # re 模块
- requests 2.23.0 # 发送请求
1、正则表达式
1.1 正则表达式及作用
正则表达式的英文是 regular expression,通常简写为 regex、regexp 或者RE,属于计算机领域的一个概念。
正则表达式的主要作用是被用来进行文本的检索、替换或者是从一个串中提取出符合我们指定条件的子串,它描述了一种字符串匹配的模式 pattern 。
目前正则表达式已经被集成到了各种文本编辑器和文本处理工具中。
1.2 应用场景
验证:比如在网站中进行表单提交时,进行用户名及密码的验证
查找:从给定的文本信息中进行快速高效地查找与分析字符串
替换:将我们指定格式的文本进行查找,然后将指定的内容进行替换
1.3 网站
在这里介绍几个用来学习和测试正则表达式的网站:
- 菜鸟教程-正则表达式
https://www.runoob.com/regexp/regexp-tutorial.html
- 正则表达式在线测试工具
https://tool.oschina.net/regex/
- GoRegex.cn
https://goregex.cn/
- 官方re模块学习
https://docs.python.org/zh-cn/3/library/re.html
- 正则表达式30分钟入门教程
https://deerchao.cn/tutorials/regex/regex.htm#mission
1.4 常用字符功能
先介绍常用正则表达式中几种特殊字符的功能:
字符类
| 字符 | 含义 | 例子 |
|---|---|---|
| . | 匹配任意一个字符 | ab.可以匹配abc或者abd |
| [ ] | 匹配括号中的任意1个字符 | [abcd]可以匹配ab、bc、cd |
| - | 在[ ]内表示的字符范围内进行匹配 | [0-9a-fA-F]可以匹配任意一个16进制的数字 |
| ^ | 位于[ ]括号内的开头,匹配除括号中的字符之外的任意1个字符 | [^xy]匹配xy之外的任意一个字符,比如[^xy]1可以匹配A1、B1但是不能匹配x1、y1 |
数量限定符
| 字符 | 含义 | 例子 |
|---|---|---|
| ? | 匹配前面紧跟字符的0次或者1次 | [0-9]?,匹配1、2、3 |
| + | 匹配前面紧跟字符的1次或者多次 | [0-9]+,匹配1、12、123等 |
| * | 匹配前面紧跟字符的0次或者多次 | [0-9]*,不匹配或者12、123 |
| {N} | 匹配前面紧跟字符精确到N次 | [1-9][0-9]{2},匹配100到999的整数,{2}表示[0-9]匹配两个数字 |
| {,M} | 匹配前面紧跟字符最多M次 | [0-9]{,1},指的是最多匹配0-9之间的1个整数,相当于是0次或者1次,等价于[0-9]? |
| {N,M} | 匹配前面紧跟字符的至少N次,最多M次 | [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3},匹配IP地址,其中.号是特殊字符,需要使用转义字符\ |
位置相关
| 字符 | 含义 | 例子 |
|---|

本文详细介绍了正则表达式的基本概念、应用场景,并通过Python的re模块展示了match、search、findall、sub和split等方法的使用。此外,还探讨了贪婪与非贪婪模式的区别,并提供了一个基于正则表达式的简单网页爬虫示例,用于提取网页中的标题、作者和简介信息。
最低0.47元/天 解锁文章

6325

被折叠的 条评论
为什么被折叠?



