一、介绍
1. 定义
正则表达式(Regular Expression)是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
2. 作用
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
- 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)
- 可以通过正则表达式,从字符串中获取我们想要的特定部分。
3、特点
- 灵活性、逻辑性和功能性非常强;
- 可以迅速地用极简单的方式达到字符串的复杂控制。
- 对于刚接触的人来说,比较晦涩难懂。
4、场景
- 如何判断一个字符串是手机号呢?
- 判断邮箱为163或者126的所有邮件地址
- 假如你在写一个爬虫,你得到了一个网页的HTML源码。其中有一段 <html><body><h1>hello world<h1></body></html> 你想要把这个hello world提取出来,但你这时如果只会python 的字符串处理,那么第一反应可能是 s = "<html><body><h1>hello world</h1></body></html>" start_index = s.find('<h1>')
二、re模块
1、字符介绍
- \A:表示从字符串的开始处匹配
- \Z:表示从字符串的结束处匹配,如果存在换行,只匹配到换行前的结束字符串。
- \b:匹配一个单词边界,也就是指单词和空格间的位置。例如, 'py\b' 可以匹配"python" 中的 'py',但不能匹配 "openpyxl" 中的 'py'。
- \B:匹配非单词边界。 'py\b' 可以匹配"openpyxl" 中的 'py',但不能匹配"python" 中的 'py'。
- \d:匹配任意数字,等价于 [0-9]。 digit
- \D:匹配任意非数字字符,等价于 [^\d]。not digit
- \s:匹配任意空白字符,等价于 [\t\n\r\f]。 space
- \S:匹配任意非空白字符,等价于 [^\s]。
- \w:匹配任意字母数字及下划线,等价于[a-zA-Z0-9_]。