2019-03-21-day016-正则表达式
昨日内容回顾
- 基本数据类型
- 编码
- 流程控制
- 文件操作
- 函数-内置函数
- 装饰器
常用模块:
- 序列化模块
- 随机数模块
- os模块
- sys模块
- 时间模块
- hashlib
- collections
- re 1天半
- logging 日志
- 自定义模块 1天
- 模块和包
- 异常处理
学习时间
面向对象 6天
网络编程 5天
并发编程 5天
数据库 5天
前端
django 基础
框架
内容回顾
常用模块
时间模块
time
time是datetime的底层模块
时间戳时间-localtime/gmtime-> 结构化时间 -strftime-> 格式化时间
时间戳时间<-mktime- 结构化时间 <-
strptime- 格式化时间
datetime
时间对象
计算时间差\时间的时分秒
import datetime
t = datetime.datetime.now() # 时间操作符
print(t.date())
print(t.time())
print(t.timestamp())
print(t.day)
print(t.month)
collections
# 可命名元组 namedtuple
# 双端队列 deque
# 默认字典 defaultdict
from collections import Iterable,Iterator
print(isinstance(open('a','w'),Iterable))
print(isinstance(open('a','w'),Iterator))
from collections import defaultdict
def func():
return 5
dic = defaultdict(func)
print(dic['a'])
双端队列 和 列表的区别
- 效率 底层的数据结构上
- 双端队列 从中间插入或者删除比较频繁的时候
- 如果只是单纯的append和pop再加上查询比较多 这个时候就用列表
正则表达式
- 场景一 :检测某一段字符串是否符合规则
- 从某一段文字中找到符合规则的内容
规则-待检测一段字符串
元字符
| 元字符 | 含义 |
|---|---|
| . | 匹配换行符之外的所有字符 |
| [0-9] \d | 匹配任意一个数字 digit |
| \w | [A-Z0-9a-z_] |
| \n | 匹配回车换行 |
| \t | 匹配制表符 table |
| 空格 | 本身匹配 空格 |
| \s | 匹配所有的空白 |
| \b | 匹配一个单词的边界 |
| \W | 除了数字字母下划线之外的所有 |
| \D | 除了数字之外的所有 |
| \S | 除了空白之外的所有 |
| [] | 述的是一个字符位置上的内容规则 |
| [0-5] | [012345] |
| 字母 | [A-Z0-9a-z] |
| 数字 | [0-9] |
| 小写 | [a-z] |
| 大写 | [A-Z] |
| 大小写 | [A-Za-z] |
| 数字和大小写字母加下划线 | [A-Z0-9a-z_] |
| \\ | \ |
| 匹配所有 | [\D\d] [\W\w] [\S\s] |
| 非字符组 | [123]除了123之外的都匹配 |
注意事项:
- [9-0] 不能从大到小来规定范围
- 字符组内所有的范围都是根据ascii码来的
- 在字符组当中 -是有特殊意义的,如果我们想取消这个横杠的特殊意义需要使用\作为转义符
开始符和结束符
| 元字符 | 含义 |
|---|---|
| ^ | 永远在一个规则的最开始 |
| $ | 永远在一个规则的最末尾 |
| ^和$ | 规定了这个字符串的长度,并且在这个长度内的内容 |
| | | 或的概念123|456 |
分组的概念
www\.(baidu|oldboy)\.com
总结
\d \w \s \n \t \D \W \S \b
[],[^]
^ $
| 或 永远把相对长的规则放在左侧
()
.
量词
在量词的范围内尽可能多的匹配
- {n} 表示出现n次
- {n,} 表示至少出现n次
- {n,m} 表示出现n-m次
- ? 表示匹配0次或1次
- + 表示匹配1次或多次
- * 表示匹配0次或多次
元字符 量词
- 匹配的是一个字符的内容
- 量词 表示的是匹配的次数
#匹配整数
[1-9]\d*|0
#匹配小数
\d+\.\d+
#匹配一个整数或者小数
\d+\.\d+|([1-9]\d*|0)
\d+\.?\d*
\d+(\.\d+)?
在量词范围内尽可能多的匹配 - 贪婪匹配
正则表达式 匹配身份证号码
15位
- 15位
- 首位不能为0
- ^[1-9]\d{14}$
18位
- 18位
- 首位不能为0,末尾可能是x和数字
- ^[1-9]\d{16}[\dx]$
合起来
- ^([1-9]\d{16}[\dx]|[1-9]\d{14})$
- [1-9]\d{14}(\d{2}[\dx])?
转义
- 在测试的网页上写的是什么
- 就直接复制过来
- 然后在字符串外面加上一个r
r'\\n' --> r'\n'
t 't'
| 元字符 | 含义 |
|---|---|
| \t | \本身具有转义作用,相当于改变了t本来的面目 |
| \ | \本身具有转义作用,\相当于转义了\的特殊作用,相当于普通的一个'\' |
贪婪匹配 :默认的 尽可能多匹配
惰性匹配 :需要我们手动设置的 尽可能少匹配
- a.* 以a开头的任意一个字符串都可以被匹配出来
- a.*? 非贪婪
- a.*?x 从a开始匹配,匹配任意长度的字符,遇到一个x就立即停止
总结
正则表达式本身和 python没有半毛钱关系
正则表达式 :
- 检测字符串是否符合规则
- 从一大段文字中找到符合规则的
元字符
- 包括的
量词
- 包括的
转义符
- \n 换行
- \n \n
- r'\n' r'\n'
惰性特点 元字符量词?x
贪婪匹配 元字符量词
作业
- hashlib模块 写函数 校验两个文件是否内容相同如果这两个文件很大
- hashlib做一个密文存储密码的注册 登录程序
- 拼手气发红包 函数
- os模块 计算文件夹的总大小
- 这个文件夹里都是文件
- 这个文件夹里还有文件夹
- 计算当前月的1号的时间戳时间
2019-03-21-day016-正则表达式的更多相关文章
- [2019.03.21]LF, CR, CRLF and LFCR(?)
开玩笑的啦,没有LFCR这种沙雕东西 为什么突然想起来写这个呢,是因为先前照着shell画llehs的时候,总报错,改正了以后又因为看不见而在上一篇博客上没有写明,所以过来好好写一写咯. 可以看出报错 ...
- 2019.03.21 admin
1.新建文件创建一个应用类 stu Python manage.py startapp stu 2,创建应用类 记得在setting中的installed_apps中添加应用 student/mode ...
- 2019.03.21 读书笔记 ==与Equals
首先得出一个结论:==是比较变量内存的数据,Equals是值比较.但是他们都能被重写,所以object又增加了一个RefrenceEquals不可被重写,只比较数据: [ReliabilityCont ...
- 2019.03.21 读书笔记 枚举ENUM
其实没必要为枚举显式赋值,如果赋值了,就一定要全部赋值,否则默认在上一个元素的基础上+1,如果不给枚举变量赋值,就算枚举中没有0元素,也会显示为0,而超出枚举范围的整型数据,也会显示值本身,而不是异常 ...
- 2019.03.21 读书笔记 readonly与const
区别: const是编译时常量(指反编译时看到的源码是常量本身,而不是变量),自带static,只能修饰基元类型.枚举.字符串,readonly是运行时常量(全局变量或者构造赋值),不受类型限制,但在 ...
- 2019.03.21 读书笔记 基元类型的Parse与TryParse 性能与建议
Parse转换失败时会抛出异常,耗损性能,如果转换成功,则与TryParse无差异.查看源码,tryparse的代码更多一些,在失败时,反而性能更优,主要是抛出异常耗损了性能.所以在不确定是用Tryp ...
- [2019.03.25]Linux中的查找
TMUX天下第一 全世界所有用CLI Linux的人都应该用TMUX,我爱它! ======================== 以下是正文 ======================== Linu ...
- http://www.cnblogs.com/wzh206/archive/2010/03/21/1691112.html
http://www.cnblogs.com/wzh206/archive/2010/03/21/1691112.html
- 2019.03.03 - Linux搭建go语言交叉环境
编译GO 1.6版本以上的需要依赖GO 1.4版本的二进制,并且需要把GOROOT_BOOTSTRAP的路径设置为1.4版本GO的根目录,这样它的bin目录就可以直接使用到1.4版本的GO 搭建go语 ...
- 2019.3.18考试&2019.3.19考试&2019.3.21考试
2019.3.18 C O D E T1 树上直接贪心,环上for一遍贪心 哇说的简单,码了将近一下午终于码出来了 感觉自己码力/写题策略太糟糕了,先是搞了一个细节太多的写法最后不得不弃疗了,然后第二 ...
随机推荐
- 排座椅(洛谷P1056)
题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳. 同 ...
- DVWA-CSRF
Low等级 image 抓包 image 正常跳转 image image 在这里我们把密码改为qwer image image image image image ...
- DBWritable的使用
首先导入mysql连接驱动jar包 或者maven模式下在pom.xml文件中追加: <dependency> <groupId>mysql</groupId> & ...
- log4j的一些参数说明
参数 说明 例子 %c 列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间 log4j配置文件参数举例 输出显示媒介 假设当前logger名字空间 ...
- [luogu P3275] [SCOI2011]糖果
[luogu P3275] [SCOI2011]糖果 题目描述 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些 ...
- cogs448
☆ 输入文件:1.in 输出文件:1.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 在某次膜拜大会上,一些神牛被要求集体膜拜.这些神牛被奖励每人吃一些神牛果. ...
- vijos 1512 SuperBrother打鼹鼠
背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来, ...
- react native 入门 (1)- 环境搭建, 创建第一个Hello World
Create React Native App 是开始构建新的React Native应用程序的最简单方法.它允许您启动项目而无需安装或配置任何工具来构建本机代码 - 无需安装Xcode或Androi ...
- html <iframe>介绍
iframe 元素会创建包含另外一个文档的内联框架 属性 值 描述 align left.right.top.middle.bottom 不赞成使用.请使用样式代替.规定如何根据周围的元素来对齐此框架 ...
- unity中手机触摸代码
#elif UNITY_IOS || UNITY_ANDROID if(Input.touchCount <= 0) { return;/ ...