模块,re模块
什么是模块
就是你要和某个东西打交道,而这个东西本身和python没有关系。这个东西本身就存在
python提供了一个功能的集合 专门负责和这个东西打交道
实质就是一组功能的集合
模块的类型
1.内置模块:不需要自己安装的模块,解释器自带的
2.第三方模块 : 需要自己安装的模块
3.自定义模块:我们自己写的模块
re模块
在python中使用正则表达式
正则表达式
从大段的文字中找到符合规则的内容
爬虫 从网页的字符串中获取你想要的数据
日志分析 提取 2019-5-10 10:---- 花的所有钱
什么是日志: 2019-5-10 09:00:00 楼下早点摊 5.00
判断某个字符串是否完全符合规则
表单验证:手机号 QQ号 邮箱 银行卡 身份证号 密码
正则表达式 只和字符串打交道
正则表达式的规则 (regex)
规则 字符串 从字符串中找到符合规则的内容
字符组:[] 写在中括号中的内容,都出现在下面的某一个字符的位置上都是符合规则的
[a-z] 匹配所有的小写字母 ascii码(97-122)
[0-9] 匹配所有的数字
[A-Z] 匹配所有的大写字母 ascii码(65-90)
[a-zA-Z] 匹配大小写字母
[a-zA-Z0-9] 匹配大小写字母,数字
[a-zA-Z0-9_] 匹配大小写字母,数字,下划线
转义符 \w,转义w,让w具有了特殊的意义,在正则表达式中代表 匹配数字字母下滑线
\\w 前面的第一个转义符转义了第二个转义符,让第二个转义符失去了转义的特殊功能
恢复成一个普通的\,这样只能匹配上一个普通的\w了
元字符
\w 匹配数字字母下划线 word
\d 匹配数字 digit
\s 匹配所有的空白符 回车/换行符 制表符 空格 space
匹配换行符 回车 \n
匹配制表符 tab \t
匹配空格
\W \D \S 和 \w \d \s 取反
[\s\S],[\d\D],[\w\W]是三组全集,匹配所有字符
\b 表示单词的边界
^ 表示匹配一个字符串的开始
$ 表示匹配一个字符串的结束
. 表示匹配 出换行符之外的所有字符
[] 只要出现在中括号内的内容都可以被匹配
[^] 只要不出现在中括号中的内容都可以被匹配
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+|\d+
\d+(\.\d+)?
字符/元字符 只约束一个字符
字符+量词 约束一个字符连续出现的次数
字符+量词+? 约束一个字符连续出现的最少次数
·字符+量词+?+x 约束一个字符连续出现量词范围内的最少次数,遇到x就立即停止
正则匹配特点:贪婪匹配 (.* x匹配任意内容最多次,知道最后一个x停止,回溯算法)
它会在允许的范围内取最长的结果
非贪婪模式/惰性匹配:在量词后面加上?
.*?x 匹配任意非换行符字符任意长度 直到遇到x就停止
匹配身份证号:{1-9}\d{16}{\dx}|{1-9}\d{14}
{1-9}\d{14}(\d{2}{\dX})?
知识点回顾
元字符:\d \w \s \n \t \b \w \d \s . ^ $ [ ] [^] ( ) |
放在字符组中的元字符会出现原形()[不能成对出现] . | ? + * - 号在括号中有特殊的意义,需要转义
量词 : + * ? {n} {n,} {n,m}
贪婪匹配/惰性匹配:
默认是贪婪匹配:回溯算法
改成惰性匹配:量词
在范围内 尽量少的匹配
? (0-1)尽量少就是匹配0次
转义符:
在正则中有特殊意义的字符想让它表示它本来的意义,就在这个字符前加上\
在正则中一些没有特殊意义的字符加上\,可能就变成有特殊意义的字符