1. 什么是模块
你要和某个东西打交道,而这个东西本身和python没有关系,这个东西本身就存在pyhton提供了一个功能的集合(模块), 专门负责和这和东西打交道 模块实际上就是给我们提供功能这个要操作的内容本来就存在,模块只不过是python提供给我们去操作这个内容的方法 模块: 一组功能的集合模块的类型: (1).内置模块: 不需要我们自己安装的,解释器自带的 (2).第三方模块: 需要我们自己安装的模块 (3).自定义模块: 需要我们自己写的
2. 正则表达式
2.1 正则表达式简介
(1) 正则表达式是是一种独立的规则,独立的语言.
正则表达式 只能和字符串打交道
(2)正则表达式的规则:
规则 字符串 从字符串中找到符合规则的内存
(3)正则表达式能干什么?
# 1.从大段的文字中找到符合规则的内容(对正则要求较高)
# 1>爬虫 从网页的字符串中获取你想要的的数据
# 2>日志分析 提取 2018-8-12 10:---- 花的所有钱
# 什么是日志:
# 2018-8-12 10:00:00 楼下早点摊 3.00
# 2.判断某个字符串是否完全符合规则(对正则要求较低)
# 表单验证: 手机号 QQ号码 邮箱 银行卡 身份证号 密码
2.2 正则表达式基础 普通字符就表示一个正常的字符 元字符表示它的特殊意义,如果转义元字符,那么这个元字符就失去了特殊意义
# 字符组: [] 写在中括号中的内容,都可以出现在下面的某一个字符的位置上(都是符合规则的)
# [0-9] 匹配数字
# [a-z] 匹配小写字母
# [A-Z] 匹配大写字母
# [8-9] [a-f] 顺序必须从前往后
# [A-z] (65-122) 其中91-96是杂质 所以可以写成[a-zA-Z]
# [a-zA-Z] 匹配大小写字母
# [a-zA-Z0-9] 匹配大小写字母,数字
# [a-zA-Z0-9_] 匹配数字,字母,下划线
# ascii码表
# 65 - 90[A-Z] 所有的大写字母(占的ascii码位)
# 97 - 122[a-z] 所有的小写字母
# 转义符
# \
2.3 元字符
# 元字符
# \w 匹配数字字母下划线 word关键字 [a-zA-Z0-9_]
# \d 匹配所有的数字 digit [0-9]
# \s 匹配所有的空白符: 回车(换行符),制表符,空格 space [\n\t ]
# 匹配换行符 回车 \n
# 匹配制表符 tab \t
# 匹配空格 空格(普通字符)
# \W \D \S 和\w \d \s取反
# \w 匹配非数字字母下划线
# \d 匹配非数字
# \s 匹配非空白符: 回车(换行符),制表符,空格
# [\s\S] [\d\D] [\w\W] 是三组全集 意思是匹配所有字符
# \b 表示单词的边界(开始和结尾)
# \bxx 匹配单词开头
# xx\b 匹配单词结尾
# 和转义字符相关的 元字符
# \w \d \s(\n\t) \b \W \D \S
# ^ $
# ^ 匹配字符串的开头 ^xx
# $ 匹配字符串的结尾 xx$
# 一起使用: 判断某个字符串是否完全符合规则
# . 表示匹配 除换行符之外的所有字符
# [] 只要出现在中括号内的内容都可以被匹配
# [^] 只要不出现在中括号中的内容都可以被匹配
# 有一些特殊意义的原字符进入字符组中会恢复它本来的意义(现原形): . | [] ()
# a|b 或 符合a规则的或者b规则的都可以被匹配
# 如果a规则是b规则的一部分,切a规则比b规则要苛刻|长,就把a规则写在前面
# 将更复杂\或更长的规则写在最前面
# () 分组 表示给几个字符加上量词约束的时候,就给这些量词分在一个组
2.4 量词
# 量词(永远是约束元字符的)
# {n}表示 这个量词之前的字符出现n次
# {n,}表示 这个量词之前的字符至少出现n次
# {n,m}表示 这个量词之前的字符出现n~m次
# ? 表示匹配量词之前的字符出现 0次 或者 1次 表示某一位可有可无的时候
# + 表示匹配量词之前的字符出现 1次 或者 多次
# * 表示匹配量词之前的字符出现 0次 或者多次
练习题: (1)匹配整数 \d+ (2)匹配小数 \d+\.\d+ (3)匹配小数或者整数 \d+\.\d+|\d+ \d+(\.\d+)? (有.就有后面的小数,他们同时出现或者同时不出现) (4)匹配身份证: [1-9]\d{16}[\dx]|[1-9]\d{14} [1-9]\d{14}(\d{2}[\dx])?
2.6 贪婪匹配和惰性匹配
# 正则表达式的匹配特点: 贪婪匹配
# 它会在允许的范围内取最长的结果
# 非贪婪匹配(惰性匹配): 在量词后面加上?
# .*?x 匹配任意非换行符字符 任意长度 直到遇到x就停止
2.7 几个字符的组合关系:
# 字符/元字符 只约束一个字符
# 字符+量词 约束一个字符连续出现的次数
# 字符+量词+? 约束一个字符出现的最少次数
# 字符+量词+?+x 约束一个字符连续出现量词范围内的最少次数,遇到x就立即停止
注意: 关于字符串挪到pyhton中的转移问题: 只需要在工具中测试完毕,确认可以匹配上之后,挪到python中在字符串的外面加上r,r""即可