Python爬虫:正则表达式详解与实例
63 浏览量
更新于2024-08-29
收藏 188KB PDF 举报
"这篇文档是关于爬虫技术中正则表达式的应用,主要涵盖了正则表达式的基础概念、单个字符匹配以及多个字符匹配的规则,并通过实例代码演示了正则表达式的使用方法。"
正则表达式是编程中用于处理文本的强大工具,尤其在数据抓取和文本分析中扮演着重要角色。它是一种模式匹配语言,能够根据预定义的规则从字符串中查找、提取、替换特定的模式。
### 1. 什么是正则表达式
正则表达式,简称为regex,是一种用来匹配字符串的模式。这种模式描述了一组字符串的共同特征,可以用来检测一个字符串是否符合这个模式,或者从中提取符合模式的部分。
### 2. 正则表达式语法(单个字符)
- **匹配某个字符串**:使用`re.match()`函数匹配字符串的开始,如果匹配成功,返回一个匹配对象,否则返回`None`。
- **点`.`**:匹配除换行符`\n`外的任意字符。
- **`\d`**:匹配0-9之间的数字。
- **`\D`**:匹配非数字字符。
- **`\s`**:匹配任何空白字符,包括换行符`\n`、制表符`\t`、回车符`\r`和空格。
- **`\w`**:匹配字母、数字或下划线,等同于`[a-zA-Z0-9_]`。
- **`\W`**:与`\w`相反,匹配非字母、数字或下划线的字符。
- **`[ ]`**:中括号内的字符集合,可以匹配其中的任意一个字符。
### 3. 正则表达式语法(多个字符)
- **`*`**:匹配前面的子表达式零次或多次。
- **`+`**:匹配前面的子表达式一次或多次。
- **`?`**:匹配前面的子表达式零次或一次。
- **`{m}`**:匹配前面的子表达式恰好m次。
- **`{m,n}`**:匹配前面的子表达式至少m次,至多n次。
### 4. 其他正则表达式语法
- **`^`**:匹配输入字符串的开始位置。
- **`$`**:匹配输入字符串的结束位置。
- **`|`**:选择匹配,即匹配前面或后面的表达式。
- **贪婪与非贪婪**:默认情况下,正则表达式是贪婪的,会尽可能多地匹配字符。使用`?`可以使其变为非贪婪,匹配尽可能少的字符。
例如,匹配1-100的数字可以写成`[1-9]|[1-9][0-9]|100`。
在Python中,我们可以使用`re`模块来实现正则表达式操作。例如:
```python
import re
# 匹配字符串'hello'的'he'
text = "hello"
ret = re.match('he', text)
print(ret.group())
# 匹配'hello'的第一个字符'h'
text = "hello"
ret = re.match('.', text)
print(ret.group())
# 匹配电话号码中的数字
text = "2589-894512"
ret = re.match('[0-9]+', text)
print(ret.group())
```
以上代码展示了正则表达式在Python中的基本使用方法,它们可以帮助我们从复杂的文本中提取所需的信息,是爬虫开发中不可或缺的一部分。
2020-12-21 上传
2009-11-23 上传
点击了解资源详情
2021-01-20 上传
2021-01-20 上传
2021-01-21 上传
点击了解资源详情
2023-07-28 上传
2020-10-19 上传
weixin_38644141
- 粉丝: 6
- 资源: 924
最新资源
- 全国江河水系图层shp文件包下载
- 点云二值化测试数据集的详细解读
- JDiskCat:跨平台开源磁盘目录工具
- 加密FS模块:实现动态文件加密的Node.js包
- 宠物小精灵记忆配对游戏:强化你的命名记忆
- React入门教程:创建React应用与脚本使用指南
- Linux和Unix文件标记解决方案:贝岭的matlab代码
- Unity射击游戏UI套件:支持C#与多种屏幕布局
- MapboxGL Draw自定义模式:高效切割多边形方法
- C语言课程设计:计算机程序编辑语言的应用与优势
- 吴恩达课程手写实现Python优化器和网络模型
- PFT_2019项目:ft_printf测试器的新版测试规范
- MySQL数据库备份Shell脚本使用指南
- Ohbug扩展实现屏幕录像功能
- Ember CLI 插件:ember-cli-i18n-lazy-lookup 实现高效国际化
- Wireshark网络调试工具:中文支持的网口发包与分析