正则表达式
知识点一:re模块
1、findall方法:
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表 ,如果没有找到匹配的,则返回空列表
2、match方法
re.match 尝试从字符串的起始位置匹配一个模式,匹配成功 返回的是一个匹配 对象(这个对象包含了我们匹配的信息),如果不是起始位置匹配成功的话,match()返回的是空
注意:match只能匹配到一个
3、search方法
re.search 扫描整个字符串,匹配成功 返回的是一个匹配对象(这个对象包含了我们匹配的信息)
注意:search也只能匹配到一个,找到符合规则的就返回,不会一直往后找
re.match与re.search的区别: re.match只匹配字符串的开始位置找,如果字符串开始不符合正则表达式,则匹配失败, re.search:匹配整个字符串,如果一直找不到则,返回是空的,没有结果
4、元字符
单字符匹配
| 字符 | 描述 |
|---|---|
| . | 匹配任意1个字符(除了\n) |
| [] | 匹配 [] 中列举的字符 |
| \d | 匹配数字,即0-9 |
| \D | 匹配非数字,即不是数字 |
| \s | 匹配空白,即 空格,tab键 |
| \S | 匹配非空白 |
| \w | 匹配单词符,即a-z、A-Z、0-9、_ |
| \W | 匹配非单词字符 |
代表数量的元字符
| 字符 | 描述 |
|---|---|
| * | 匹配前一个字符出现0次或者无限次,即可有可无 |
| + | 匹配前一个字符出现1次或者无限次,即至少有1次 |
| ? | 匹配前一个字符出现0次或者1次,即要么有1次,要么没有 |
| {m} | 匹配前一个字符出现m次 |
| {m,} | 匹配前一个字符至少出现m次 |
| {m,n} | 匹配前一个字符出现从m到n次 |
代表边界的元字符
| 字符 | 描述 |
|---|---|
| ^ | 匹配字符串开头 |
| $ | 匹配字符串结尾 |
| \b | 匹配一个单词的边界 |
| \B | 匹配非单词边界 |
分组匹配
| 字符 | 描述 |
|---|---|
| | | 匹配左右任意一个表达式 |
| (ab) | 将括号中的字符作为一个分组 |
5、贪婪和非贪婪
正则默认都是用贪婪模式去匹配数据的,就是尽可能多的匹配符合要求的数据,
在非贪婪模式下,始终找最短匹配