Python爬虫:正则表达式详解与实例

0 下载量 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中的基本使用方法,它们可以帮助我们从复杂的文本中提取所需的信息,是爬虫开发中不可或缺的一部分。