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一遍贪心 哇说的简单,码了将近一下午终于码出来了 感觉自己码力/写题策略太糟糕了,先是搞了一个细节太多的写法最后不得不弃疗了,然后第二 ...
随机推荐
- drozer安装出现的问题
首先先检查你的手机或者模拟器是否开启了drozer agent 安装出现的问题: (1)找不到java路径: 解决方法:新建一个TXT文件,在文件中写如下内容: [executables] java ...
- K8S各知识点整理
一.k8s组成部分 Master 1. kube-apiserver 封装了核心对象的增删改查操作,以REST API接口方式提供给外部和内部组件调用.它维护的REST对象将持久化到Etcd中 2 ...
- 26. Remove Duplicates from Sorted Array C++ 删除排序数组中的重复项
https://leetcode.com/problems/remove-duplicates-from-sorted-array/ 双指针,注意初始时左右指针指向首元素! class Solutio ...
- git commit -am "remark" 提交
一.前言 假如你昨晚把本地文件a.html提交到远程库,今早发现还有补充的内容,于是添加了新的内容到a.html,并且还在本地还多添加了“几个文件”,那么怎么使用git来把这些文件一并提交到远程库呢? ...
- 浅谈table、form 标签
1.<table> 标签 1.1包含的元素 <caption></caption>:表头信息. <tr></tr> :定义一个表格行: &l ...
- iOS的Cookie存取
当前一些公司为了快速出一款app,很多时候采用UINavigationController+WebView或者NavigationController+UITabbarVC+WebView的方式,这样 ...
- vue-router 路由钩子(hook)
钩子(hook)—劫持机制 路由钩子(守卫钩子): 1.全局钩子2.某个路由独享的钩子3.组件内钩子 三种路由钩子中都涉及到了三个参数,官方(https://router.vuejs.org/zh-c ...
- this 锁与 static 锁
一. this 锁 同步函数其实用到的锁就是 this 锁,为什么他用到的是 this 锁呢?为了证实这个结论我 们本节将会有两个实验性的程序来作为支撑,说服自己和读者证明同步函数用到的就是 this ...
- php删除文件夹下面所有文件包括(删除文件夹)不删除文件夹
function deldir($dir) { //先删除目录下的文件: $dh=opendir($dir); while ($file=readdir($dh)) { if($file!=" ...
- Win10系列:JavaScript页内导航
页内导航是在一个页面内根据需要加载其他页面的内容,在开发基于JavaScript的Windows应用商店应用时,可以使用WinJS.Navigation.navigate函数传递要加载的页面地址并使用 ...