模块:一组功能的集合
模块实际上就是给我们提供功能
模块的类型:
1.内置模块:不需要我们自己安装的,解释器自带的
2.第三方模块:需要我们自己安装的模块
3.自定义模块:我们自己写的模块
re模块
1.在python中使用正则表达式
2.正则表达式
正则表达式
在线正则表达式测试工具
http://tool.chinaz.com/regex/
是一种独立的规则,独立的语言
只和字符串打交道
1.从大段文字中找到符合规则的内容
a.爬虫 :从网页的字符串中获取你想要的的数据
b.日志分析:
2.判断某个字符串是否完全符合规则
a.表单验证:手机号 qq号码 邮箱 身份证 密码 银行卡
正则表达式的规则
规则 字符串 从字符串中找到符合规则的内容
字符组:[ ] 写在中括号中的内容,都出现在下面的某一个字符的位置上都是符合规则(从小到大)
[0-9] 匹配数字
[a-z] 匹配小写字母
[A-Z] 匹配大写字母 [A-z] 不可以[a-Z]
[a-zA-Z0-9] 匹配字母数字
[a-zA-Z0-9_] 匹配字母数字以及下划线
转义符
\ 转移
取消转入 r print(r'\n') 取消转移的意思
元字符
\w 匹配数字字母下划线 word关键字 [a-zA-Z0-9]
\d 匹配所有的数字 digit [0-9]
\s 匹配所有的空白符 space (回车 空格 tab)[\n\t ]
\t 匹配tab
\n 匹配回车
匹配空格
\W 匹配不是字母数字下划线
\D 匹配不是数字的
\S 匹配不是空白符等
\b 表示单词的边界
ing\b 匹配ing结尾
\by 匹配以y开头
^ 匹配一个字符串的开始
^hello 匹配hello开始
匹配hello结尾
. 匹配除了换行符之外的所有
[] 只要出现在中括号内的内容都可以匹配
[^] 只要不出现在中括号中的内容都可以匹配
有一些有特殊意义的元字符进入字符组中会恢复本来的意义
| 或 a|b 符合a规则的或者b规则的都可以被匹配
如果a规则是b规则的一部分,且a规则比b规则要苛刻/长,就把a规则写在前面
将更复杂的或者更长的规则写在最前面
() 分组 表示给几个字符加上量词约束的需求的时候,就给这些量词分在一个组
匹配手机号
量词
{n}表示 这个量词之间的字符出现n次
{n,}表示 这个量词之前的字符至少出现n次
{n,m}表示 出现n次到m次
? 表示匹配这个量词之前的字符出现0次或1次,表示可有可无
+ 表示匹配量词之前的字符出现1次或者多次
* 表示匹配量词之前的字符出现0次或多次
匹配一个小数
小练习
匹配整数 \d+
匹配小数 \d+.\d+
匹配小数或者整数 \d+(.\d+)?
正则表达式的匹配特点:贪婪匹配
它会在允许的范围内取最长的结果
非贪婪模式/惰性匹配:在量词的后面加上?
.*?x 匹配任意非换行字符任意长度,直到遇到x就停止
匹配身份证(15位或者18位)
110107201910102277
11010720191010227x
220205200010507
方式一
^[1-9]\d{16}[\dx]|[1-9]\d{14}
方式二
[1-9]\d{14}(\d{2}[\dX])?
匹配生日2018-12-04
^[1-9]\d{0,3}-(1[0-2]|0?[1-9])-(3[01]|[12]\d|0?[1-9])$
匹配QQ号
^[1-9]\d{4,11}$
匹配11位的电话号码
1[3-9]\d{9}
匹配长度8-10位的用户密码:包含数字字母下划线
\w{8,10}
匹配验证码,4位数字字母组成
[\da-zA-Z]{4}
匹配邮箱地址
[0-9a-zA-Z][\w\-.]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*\.[A-Za-z0-9]{2,6}