一、正则表达式:什么是正则表达式
正则表达式(Regular Expression),简称“regex”,是用于处理字符串的一种工具。
正则表达式可以用来描述,匹配、搜索、替换、分割等操作。它是一种描述性的语言,可用于识别各种模式。
二、在Python中使用正则表达式
Python提供了re模块来支持正则表达式操作。re模块是Python标准库中的一部分,使用时需要先导入。
import re
了解了re模块的基础知识后,我们可以尝试编写一个简单的正则表达式,来提取电话号码信息。
三、提取电话号码信息的正则表达式
在中国,电话号码的格式通常是3或4位区号,加上7或8位号码。我们可以使用正则表达式对这种格式进行匹配,从而提取出电话号码信息。
下面的正则表达式可以匹配中国大陆手机号码,包括两个格式:11位数字和12位数字(带“+86”前缀):
phone_pattern = re.compile(r'(?:(?:\+|00)86)?1\d{10}')
该正则表达式由三个部分组成,分别是:
- (?:(?:\+|00)86)?:可选项,表示中国的国际区号,包括+86和0086两种形式。
- 1:必选项,表示中国大陆的手机号码都以1开头。
- \d{10}:必选项,表示手机号码的后10位是数字。
四、使用正则表达式提取电话号码信息
有了正则表达式,我们就可以用它来提取电话号码信息了。
首先,我们需要一个字符串,作为匹配的目标。假如我们有一个异常数据集,其中包含了很多电话号码:
data = '<p>公司总机:010-88886666</p><p>张三:13911112222,李四:010-77778888</p><p>王五:+8613812345678</p>'
我们可以使用findall()函数查找出所有符合正则表达式的电话号码:
phone_list = re.findall(phone_pattern, data)
findall()函数将返回一个列表,其中包含了所有的电话号码信息。我们可以遍历这个列表,逐一输出电话号码信息:
for phone in phone_list: print(phone)
这样就可以输出所有的电话号码信息。
五、完整代码示例
import re data = '<p>公司总机:010-88886666</p><p>张三:13911112222,李四:010-77778888</p><p>王五:+8613812345678</p>' phone_pattern = re.compile(r'(?:(?:\+|00)86)?1\d{10}') phone_list = re.findall(phone_pattern, data) for phone in phone_list: print(phone)
以上是完整的代码示例。运行该代码,将输出所有的电话号码信息。