提取身份证号:
import re
text = "418193200001016666"
IDCards_pattern = r'^([1-9]\d{5}[12]\d{3}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX])$'
IDs = re.findall(IDCards_pattern, text, flags=0)
print(IDs)
打印结果:
[('140581199509030032', '09', '03')]
附:
正则表达式的书写语法
1、^ 表示匹配字符串的开始位置 (例外 用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)
2、$ 表示匹配字符串的结束位置
3、* 表示匹配 零次到多次
4、+ 表示匹配 一次到多次 (至少有一次)
5、? 表示匹配零次或一次
6、. 表示匹配单个字符
7、| 表示为或者,两项中取一项
8、( ) 小括号表示匹配括号中全部字符
9、[ ] 中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z]
10、{ } 大括号用于限定匹配次数 如 {n}表示匹配n个字符 {n,}表示至少匹配n个字符 {n,m}表示至少n,最多m
11、\ 转义字符 如上基本符号匹配都需要转义字符 如 \* 表示匹配*号
12、\w 表示英文字母和数字 \W 非字母和数字
13、\d 表示数字 \D 非数字