Python网络爬虫:正则表达式Re库入门与实战
需积分: 0 48 浏览量
更新于2024-08-05
收藏 443KB PDF 举报
"正则表达式(Re)是Python中用于处理文本的一种强大的工具,它能简洁地描述一系列字符串的模式。本节介绍了Re库的基础知识,包括正则表达式的语法和常用操作符,以及Re库的基本使用方法。"
在Python中,正则表达式(Regex)是通过内置的`re`库来实现的。正则表达式是一种特殊语法,用于匹配和处理文本中的特定模式。在【标题】"第三讲整理1"的【描述】中,提到了正则表达式的概念和它的用途,即表达文本类型的特征。
1. **正则表达式的基本语法**
- `.`: 代表任意单个字符。
- `[]`: 定义字符集,表示其中任意一个字符,如 `[abc]` 匹配 'a'、'b' 或 'c'。
- `[^...]`: 定义非字符集,表示不在括号内的任意字符,如 `[^abc]` 匹配除了 'a'、'b' 和 'c' 之外的单个字符。
- `*`: 前面的字符可以出现0次或无限次,如 `abc*` 匹配 'a'、'ab'、'abc'、'abcc' 等。
- `+`: 前面的字符至少出现1次,如 `abc+` 匹配 'abc'、'abcc'、'abccc' 等。
- `?`: 前面的字符可以出现0次或1次,如 `abc?` 匹配 'ab' 或 'abc'。
- `|`: 分割符,表示左右两边的表达式可以任意匹配,如 `abc|def` 匹配 'abc' 或 'def'。
- `{m}`: 前面的字符重复m次,如 `ab{3}c` 匹配 'abbbc'。
- `{m,n}`: 前面的字符重复m到n次,含n,如 `ab{1,2}c` 匹配 'abc' 或 'abbc'。
- `^`: 匹配字符串开头,如 `^abc` 匹配以 'abc' 开头的字符串。
- `$`: 匹配字符串结尾,如 `abc$` 匹配以 'abc' 结尾的字符串。
- `()`: 分组,用于创建子模式,如 `(abc)` 匹配 'abc'。
2. **经典正则表达式实例**
- `^[A-Za-z]+$`: 只包含26个英文字母的字符串。
- `^[A-Za-z0-9]+$`: 包含26个英文字母和数字的字符串。
- `^-?\d+$`: 表示整数形式的字符串。
- `^[0-9]*[1-9][0-9]*$`: 表示正整数形式的字符串。
- `[1-9]\d{5}`: 匹配中国境内6位的邮政编码。
- `[\u4e00-\u9fa5]`: 匹配中文字符。
- `\d{3}-\d{8}|\d{4}-\d{7}`: 匹配国内电话号码(3位区号-8位或4位区号-7位)。
3. **Re库的使用**
- **正则表达式的表示类型**: 在Python中,正则表达式通常使用原始字符串(`r'...'`)来表示,如 `r'[1-9]\d{5}'` 用于匹配中国邮政编码。
在Python的`re`库中,我们可以使用`re.compile()`函数将正则表达式字符串编译成`Pattern`对象,然后使用该对象进行匹配、查找、替换等操作。例如:
```python
import re
pattern = re.compile(r'^[A-Za-z]+$')
match = pattern.match('abc')
if match:
print('Match found:', match.group())
else:
print('No match.')
```
此外,`re`库还提供了`search()`、`findall()`、`sub()`等方法,分别用于在文本中查找第一个匹配项、查找所有匹配项和替换匹配项。
正则表达式是Python网络爬虫中不可或缺的一部分,用于从网页源代码中提取所需信息,例如提取URL、邮箱地址、电话号码等。在实际应用中,根据具体需求组合不同的正则表达式操作符,可以实现更复杂的文本匹配和处理。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-08-03 上传
2022-08-03 上传
2022-08-04 上传
2022-03-10 上传
2008-12-04 上传
2021-10-05 上传
不知者无胃口
- 粉丝: 32
- 资源: 328
最新资源
- matlab代码对齐-my-LaTex-study:我的乳胶研究
- when-2-not-meet:一种渐进式网络应用程序,彻底改变了计划安排
- pyg_lib-0.3.0+pt20-cp38-cp38-macosx_11_0_x86_64whl.zip
- rock-paper-scissors:gsg代码学院的第二项任务
- snipp-it:开发人员的社交媒体中心
- Tutoriales:存储库,将共享有关可为社区服务的编程语言,方法和其他技巧的不同教程和演示文稿
- dotnet 5 让 WPF 调用 WindowsRuntime 方法.rar
- GD32f1x的IAP-flash-rom-ymodem.zip
- fullstack-social-app:全栈
- 一个基于ChatGPT开发的终端AI助手.zip
- 示例应用
- technologi-backend-test:技术后端测试
- DEMENT:史蒂文·艾里森(Steven Allison)维护的酶学特性的分解模型
- subscription-manager:用于Candlepin的GUI和CLI客户端
- 判决matlab代码-beliefpolarization-psychreview-2014:“信念两极分化并不总是不合理”的代码和数据
- Artstation Discover-crx插件