正则表达式
Python提供了对正则表达式的支持,在其内置的re模块中包含一些函数接口和类,开发人员可以使用这些函数和类,对正则表达式与匹配结果进行操作。
re模块的一般使用步骤如下:
(1)使用compile()函数将正则表达式以字符串形式编译为一个Pattern类型的对象。
(2)通过Pattern对象提供的一系列方法对文本进行匹配查找,得到一个表示匹配结果的Match对象。
(3)使用Match对象提供的属性和方法获得信息,如匹配到的字符串。
大多数情况下,从网站上爬取下来的网页源码中都有汉字,如果要匹配这些汉字,那么就需要知道其对应的正则表达式。通常情况下,中文对应的Unicode 编码范围为[u4e00-u9fa5],这个范围并不是很完整,比如没有包括全角(中文)标点,但是大多数情况下是可以使用的。
例如,把“你好,hello,世界”中的汉字提取出来,可以通过如下代码实现:
import re
# 待匹配的字符串
title = "你好,hello,世界"
# 创建正则表达式,用于只匹配中文
pattern = re.compile(r"[\u4e00-\u9fa5]+")
# 检索整个字符串,将匹配的中文放到列表中
result = pattern.findall(title)
print(result)
上述示例中,首先定义了一个字符串“你好,hello,世界”,然后创建一个正则表达式对象pattern,用于匹配该字符串中的中文,接着调用findall方法将“你好”和“世界”提取为子串后保存到列表result中。
该示例的执行结果如下:
['你好', '世界']