Python网络爬虫:正则表达式Re库入门与实战

需积分: 0 0 下载量 33 浏览量 更新于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、邮箱地址、电话号码等。在实际应用中,根据具体需求组合不同的正则表达式操作符,可以实现更复杂的文本匹配和处理。