正则表达式
文章目录
1. 正则表达式
1.1 正则表达式介绍
1.1.1 什么是正则表达式?
- 正则表达式就是一种字符串,该字符串通过包含特殊的符号,来描述一类字符串的公共特点,进而可以使用该模式串来匹配并获取文本内容中的所有符合该特点的字符串,也可以使用该模式来对一些字符串进行匹配,观察这些字符串是否符合该模式,实现字符串的筛选等功能,用途非常广泛
1.1.2 正则表达式的作用
- 当我们需要需要对字符串进行解析来获取数据时,我们可以通过字符串定位(find)的方法,来寻找到自己所需要的信息或者缩减寻找信息的范围,但是面对情况复杂的字符串信息,可能需要设置多种条件来一一判断;情况越复杂,条件分支就会增长的极快,所以使用常规的字符串定位,然后进行判断的方法显然就不合适了;特别是在网络爬虫爬取的数据分析中,面对大量的字符数据要靠着自己来设置条件判断显然是非常困难的,所以我们需要使用正则表达式来进行字符串的匹配,从而实现我们想要的功能
1.2 正则表达式的使用
1.2.1 前提
(1)选用示例语言
- 为了方便,本文使用python作为正则表达式的使用示例,其实绝大部分主流语言都会支持正则表达式,使用过程也几乎相同,只是不同语言有着不同的语法表示而已
(2)文本的获取
-
使用
requests
库来获取B站首页html页面,将其写入到文本中,避免每次测试都需要动用网络资源immport requests # 将html页面写入到文本 with open("data.html","w",encoding="utf-8") as html: response = requests.get("https://www.bilibili.com/") html.write(response.text) # 读取文本内容 text = '' with open("data.html",'r',encoding="utf-8") as html: text = html.read()
(3)正则表达式的效果查看
-
学习过程中可以使用网站:regex101,来查看匹配效果:
- 上面为正则表达式,下面为文本内容,右侧为匹配的详细信息
1.2.2 使用python匹配正则表达式
(1)re
库
-
导入
re
(regular expression)库import re
(2)re.Pattern
类
-
该类为re库中的一个类,通过传入正则表达式构造该对象,用于去寻找匹配的字符串
pattern = re.compile(r"正则表达式")
-
通常使用 r"字符串"来表示这是一个原始字符串,即不对一些特殊字符,如"\","\t"等进行转义,一下为两者区别的示例:
>>> str = "this is a string.\n \tand this is the second line." >>> print(str) this is a string. and this is the second line. >>> str = r"this is a string.\n \tand this is the second line." >>> print(str) this is a string.\n \tand this is the second line.
(3)pattern.finall(文本内容)
-
该方法为pattern对象的方法,用于依据正则表达式在匹配传入文本中的所有内容,将符合规则的字符串存入列表中,最后返回该列表
re.compile(r"哔哩哔哩") strList = patern.findall(text) print(strList)
结果:
<class 'list'> ['哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩 哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔 哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩', '哔哩哔哩']
1.2.3 正则表达式中的特殊元字符
正则表达式的特殊字符包括:. * + ? \ [ ] ^ $ { } | ( )
(1)任意字符.
-
.
表示要匹配除了换行符之外的任何单个字符-
比如下面:
-
-
python示例:
pattern