【基础】数据提取技巧:正则表达式在爬虫中的应用
发布时间: 2024-06-24 21:54:25 阅读量: 86 订阅数: 171
Python爬虫 正则表达式应用详解
![【基础】数据提取技巧:正则表达式在爬虫中的应用](https://img-blog.csdnimg.cn/20201205103007226.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE0NTM2MQ==,size_16,color_FFFFFF,t_70)
# 1. **2.1 正则表达式基础语法**
正则表达式(Regular Expression,简称 Regex)是一种强大的文本模式匹配工具,它使用一组特殊字符和语法规则来定义要匹配的文本模式。正则表达式的基础语法包括:
- **匹配字符:**`.` 匹配任意单个字符,`[abc]` 匹配方括号内的任何一个字符,`[^abc]` 匹配不在方括号内的任何字符。
- **重复匹配:** `*` 匹配前一个字符 0 次或多次,`+` 匹配前一个字符 1 次或多次,`?` 匹配前一个字符 0 次或 1 次。
- **分组:** `()` 将表达式分组,以便可以对其执行操作,例如引用或重复。
- **锚点:** `^` 匹配字符串的开头,`$` 匹配字符串的结尾。
- **转义字符:** `\` 转义特殊字符,使其不再具有特殊含义。
# 2. 正则表达式在数据提取中的应用
正则表达式(Regular Expression,简称 Regex)是一种强大的模式匹配语言,它允许我们使用简洁的语法来匹配和提取复杂的数据模式。在数据提取领域,正则表达式扮演着至关重要的角色,因为它可以帮助我们从非结构化文本中快速准确地提取所需信息。
### 2.1 正则表达式基础语法
正则表达式由一系列元字符和普通字符组成,元字符具有特殊的含义,而普通字符则匹配其本身。以下是一些常用的正则表达式元字符:
| 元字符 | 含义 |
|---|---|
| `.` | 匹配任何单个字符 |
| `*` | 匹配前一个字符零次或多次 |
| `+` | 匹配前一个字符一次或多次 |
| `?` | 匹配前一个字符零次或一次 |
| `[]` | 匹配方括号内的任何一个字符 |
| `^` | 匹配字符串的开头 |
| `$` | 匹配字符串的结尾 |
例如,以下正则表达式匹配以字母 "a" 开头的任何单词:
```
^a.*
```
### 2.2 正则表达式高级应用
除了基础语法之外,正则表达式还提供了许多高级功能,例如:
- **分组和引用:**使用圆括号 `()` 对子表达式进行分组,并使用 `\n` 引用第 n 个分组。
- **条件匹配:**使用 `|` 分隔符来匹配多个选项。
- **反向引用:**使用 `\b` 匹配单词边界。
- **贪婪和非贪婪匹配:**使用 `+?` 和 `*?` 来控制匹配的贪婪性。
### 2.3 正则表达式在数据提取中的实践
在数据提取中,正则表达式可以用于各种任务,例如:
- **提取电子邮件地址:**
```
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}
```
- **提取电话号码:**
```
(\d{3}[-.\s]??\d{3}[-.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-.\s]??\d{4}|\d{3}[-.\s]??\d{4})
```
- **提取日期:**
```
(0[1-9]|[12]\d|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d
```
**代码块:**
```python
import re
text = "John Doe, 123 Main Street, Anytown, CA 12345, john.doe@example.com"
# 提取姓名
name = re.search(r"^(.*?),", text).group(1)
# 提取地址
address =
```
0
0