正则表达式
正则表达式:
官方定义: 正则表达式是对字符串操作的一种逻辑公式, 就是事先定义好的一些有特定字符, 以及这些特定字符的组合, 组成一个规则字符串,次字符串用来对字符串进行过滤.
正则表达式只能和字符串相关.
字符组: [ 字符组 ]
在同一个位置上可能出现的各种字符组成一个字符组,用 [ ] 表示, 字符可以有很多种 : 数字, 字母, 标点符号等
| 元字符 | 匹配内容 |
| . | 匹配除换行符以外的其他任意字符 |
| \w | 匹配数字字母下划线 |
| \s | 匹配任意空白符 |
| \d | 匹配数字 |
| \n | 匹配换行符 |
| \t | 匹配制表符 |
| \b | 匹配一个单词的结尾 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串的结束 |
| \W | 匹配非数字字母下划线 |
| \S | 匹配非空白符 |
| \D | 匹配非数字 |
| a|b | 匹配a或匹配b |
| () | 匹配括号内的表达式,表示一个组 |
| [ ] | 匹配字符组内的字符 |
| [^ ] | 匹配除了字符组内的所有字符 |
量词 :
| 量词 | 用法说明 |
| * | 至少重复0次或者重复n次 |
| + | 至少重复1次或者重复n次 |
| ? | 重复0次或者1次 |
| { n } | 重复n次 |
| { n, } | 重复n次或者更多次 |
| { n, m } | 重复n到m次 |
贪婪匹配 :
在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配
| 正则 | 带匹配字符 | 匹配结果 | 说明 |
| <.*> | <script>....<script> | <script>....<script> |
默认为贪婪匹配, 会匹配符合匹配规则中最长的字符串 |
| <.*?> | <script>....<script> |
<script> <script> |
表达式后加上?意思 将贪婪匹配转换为非贪婪匹配, 会在符合匹配规则的情况下 尽量匹配最短的字符串 |
非贪婪匹配 :
| *? | 重复任意次,但会尽可能的少重复 |
| +? | 重复一次或者更多次,但会尽可能的少重复 |
| ?? | 重复0次或者1次,但会尽可能的少重复 |
| { n, m }? | 重复n到m次,但会尽可能的少重复 |
| { n, }? | 重负n次后者更多次,但会尽可能的少重复 |
.*?的用法 :
. 是去任意字符
* 是取0到无穷
? 表示非贪婪模式
大多情况用在 : .*?x #意思就是去前面任意的任意字符,直到一个x出现.
转义符 \
正则表达式中,有很多有特殊意义的元字符,比如 : \d , \s等, 如果要在正则中匹配正常的 ' \d '而不是数字,就需要对 ' \ ' 进行转义,变成 ' \\ '.
| 正则 | 待匹配结果 | 匹配结果 | 说明 |
| \d | \d | False | 因为在正则表达式中 ' \ '是具有特殊意义的字符,要匹配 ' \d '本身,表达式 \d 无效 |
| \\d | \d | True | 转移 \ 后变成 \\ ,可以匹配 |
| \\\\d | \\d | True | python中,字符串中的 \ 也需要转义 |
| r'\\d' | r'\d' | True | 在字符串前加 r, 让整个字符串不转义 |

浙公网安备 33010602011771号