1、字符组
正则 | 准备匹配的字符 | 结果 | 说明 |
[0123456789] | 6 | True | 被匹配必须是匹配规则里有的即为true,如果6变成a则为false |
[0-9] | 5 | True | 也可以用‘-’表示范围,[0-9]就和[0123456789]是一个意思 |
[a-z] | d | True | 匹配所有的小写字母 |
[A-Z] | A | True | 匹配所有的大写字母 |
[0-9a-zA-Z] | 1 | True | 匹配所有大写,小写,数字 |
[0-9] | h | False | 匹配所有数字 |
2、字符
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
\b | 匹配一个单词的结尾 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结尾 |
\W | 匹配非字母或数字或下划线 |
\D | 匹配非数字 |
\S | 匹配非空白符 |
a|b | 匹配字符a或字符b |
() | 匹配括号内的表达式,也表示一个组 |
[…] | 匹配字符组中的字符 |
[^…] | 匹配除了字符组中字符的所有字符 |
3、量词
量词 | 说明 |
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
4、贪婪匹配
#常用的非贪婪匹配Pattern
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
#.*?的用法
. 是任意字符
* 是取 0 至 无限长度
? 是非贪婪模式。
何在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在:
.*?x
就是取前面任意长度的字符,直到一个x出现
5、python中使用
import re strs = ['abac199ABC+l-'] prog = re.compile('\d{2}') # 匹配2个数字 v = prog.search(strs[0]).group() print(v)