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一遍贪心 哇说的简单,码了将近一下午终于码出来了 感觉自己码力/写题策略太糟糕了,先是搞了一个细节太多的写法最后不得不弃疗了,然后第二 ...
随机推荐
- 巧用JSON
在开发的过程中,对json的接触基本是前端页面搭建完成后,对后台数据的请求.如果接口尚未提供,一般情况下会先按规定的要求写好需要的json模拟出请求的后台数据.json的格式有很多种,关注的主体是da ...
- js 动态添加 外部js css 到head标签
function appendJQCDN() { var head = document.head || document.getElementsByTagName('head')[0]; var s ...
- Thirft框架介绍
1.前言 Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目.Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和 ...
- jquery 学习(一):jQuery 简介
jQuery 库 - 特性: jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: html 元素获取, html 元素操作, css 操作, html 事件函数, J ...
- SQL - 数据查询
数据查询是数据库的核心操作.SQL 提供了 select 语句进行数据查询,该语句的一般格式为: select [ ALL | distinct ] <目标列表达式> [ ,<目 ...
- Hadoop介绍-1.基本原理
了解大数据 首先,搞清楚hadoop在处理大数据的定位在哪里 什么是大数据?为什么要处理大数据? 数据量大(Volume) 数据类别复杂(Variety) 数据处理速度快(Velocity) 数据真实 ...
- python中的ConfigParser模块
1.简介 我们经常需要使用配置文件,例如.conf和.ini等类型,使用ConfigPaser模块可以对配置文件进行操作. 2.示例 现有配置文件test.ini,其内容如下: [section_a] ...
- loj 10004 智力大冲浪
智力大冲浪 题目描述: 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的.接下来主持人宣布了 ...
- Thinkphp5 Nginx Pathinfo配置
server { listen ; server_name sui.com; root /tmmee/sad.cn/public; index index.php index.html index.h ...
- windows 下的常用工具
网址:http://cmder.net/ 如果vim乱码 命令行输入 set LC_ALL=zh_CN.UTF8 添加cmder到鼠标右键 c://安装目录/Cmder.exe /REGISTE ...