正则表达式——字符串匹配
正则表达式
1. 字符组[字符]
在同一位置可能出现的各种字符组成了一个字符组
ex:[0-9]——表示0-9中任意一个数字
[a-f]——表示a-f之间任意一个字母
2. 元字符
| \w | 匹配字母或数字或下划线 |
| \W | 匹配除字母或数字或下划线以外的字符 |
| \d | 匹配数字 |
| \D | 匹配非数字 |
| \s | 匹配任意的空白字符 |
| \S | 匹配非空白字符 |
| \n | 匹配一个换行符 |
| \t | 匹配一个制表符 |
| \b | 匹配一个单词的结尾 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串的结束 |
| . | 匹配除换行符之外的任意字符 |
| () | 分组——对多个字符组整体做量词约束的时候用到 |
| a|b | 匹配字符a或b。从左到右匹配,匹配上就不继续匹配了(应该把长字符串放左边) |
| [...] | 匹配字符组中的任意字符 |
| [^...] | 除了字符组内其他都匹配 |
3. 量词
| * | 重复零次或更多次次 |
| + | 重复一次或更多次 |
| ? | 重复零次或一次 |
| {n} | 重复n次 |
| {n,} | 重复n次或更多次 |
| {n,m} | 重复n到m次 |
4. 转义
| 正则 | 待匹配字符 | 匹配结果 | 说明 |
| \d | \d | False | 正则表达式中的元字符\d表示数字 |
| \\d | \d | True | \转义之后变为\\ |
| "\\\\d" | "\\d" | True | python里面,字符串中'\'需转义。每一个'\'都需要转义一次 |
|
r'\\d' |
r'\d' | True | r + 字符串,让整个字符串不转义 |
5. 贪婪/惰性匹配
量词后加上 ‘?’ —— 贪婪匹配
| 正则 | 待匹配字符 | 匹配结果 | 说明 |
| <.*> | <script>...<script> | <script>...<script> |
默认为贪婪匹配 匹配尽可能多的字符 |
| <.*?> | <script>...<script> |
<script> <script> |
加上'?'之后,匹配尽可能少的字符 将贪婪匹配转为非贪婪匹配(惰性匹配) |
最常用:
.*? —— 匹配尽量少的任意字符
.*?abc —— 一直匹配,遇到abc就停止
6. ?的用法
(1)?—— 表示量词,重复零次或一次
(2)量词+?—— 尽可能少的匹配
(3)?:+分组—— 取消分组优先
长得丑就应该多读书。我爱学习,只爱学习,最爱学习!

浙公网安备 33010602011771号