实例 #### 1. 数字 ======= 基本 ---- 匹配正数、负数和小数:: [-+]?\d+(?:\.\d+)? .. figure:: https://img.zhaoweiguo.com/knowledge/images/regexps/regexp_example1_number.png 匹配正数、负数和小数的正则 其他:: 1. 非负整数,包含 0 和 正整数 [1-9]\d*|0 2. 非正整数,包含 0 和 负整数 -[1-9]\d*|0 浮点数 ------ :: [-+]?\d+(?:\.\d+)? 考虑可以有 .5 和 +.5 这样的写法,但一般不会有 -.5 这样的写法。负号的时候整数部分不能没有,而正数的时候,整数部分可以没有,所以正则你可以将正负两种情况拆开,使用多选结构写成:: -?\d+(?:\.\d+)?|\+?(?:\d+(?:\.\d+)?|\.\d+) :: 负数浮点数表示:-\d+(?:\.\d+)? 正数浮点数表示:\+?(?:\d+(?:\.\d+)?|\.\d+) 十六进制数 ---------- :: [0-9A-Fa-f]+ 常见码 ====== 手机号码 -------- 如果只限制前 2 位:: 1[3-9]\d{9} 限制到前三位:: 1(?:3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[1389])\d{8} .. figure:: https://img.zhaoweiguo.com/knowledge/images/regexps/regexp_example2_tel.png 截止 2019 年 12 月,我国公众移动通信网网号分配情况 身份证号码 ---------- :: 规则: 1. 分两代的,第一代是 15 位,第二代是 18 位 2. 如果是 18 位,最后一位可以是 X(或 x),两代开头都不能是 0 [1-9]\d{14}(\d\d[0-9Xx])? 邮政编码 -------- :: 1. 简单版: \d{6} 2. 添加断言版 (?>> import re >>> reg = re.compile(r'[\u4E00-\u9FFF]') >>> reg.findall("和伟忠一起学正则 regex") [' 和', ' 伟', ' 忠', ' 一', ' 起', ' 学', ' 正', ' 则']