一.正则表达式
1.定义一个规则,检测某一段字符串是否符合规则,将符合规则的字符匹配出来。
2.只和字符串相关
3.字符组
描述一个字符位置的内容
3.1 [012345]检测0,1,2,3,4,5
3.2 [0-5]检测从0到5
3.3 不能是[9-5],不能由大到小来规定范围。
3.4 字符组的所有范围是指向ascii
3.5 [A-Z0-9a-z] 这里无逗号,分隔符
4.元字符:优先级从左至右
元字符 | 属性 |
\d | 匹配数字digit |
\w | 匹配字母或数字或下划线word |
\s | 匹配任意空白(包括制表符,换行符,空格)space |
\D | 匹配非数字 |
\W | 匹配非字母或数字或下划线 |
\S | 匹配非空白字符 |
\n | 匹配换行符 |
\t | 匹配制表符Tab |
\b | 匹配一个单词结尾,开头结尾都可以 |
. | 匹配换行符之外的所有 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
() | 匹配括号内的表达式,也表示一个组 |
a|b | 匹配字符a或者b |
[] | 匹配字符组内的字符 |
[^ ] | 匹配除了字符组的所有字符 |
5.量词
量词 | 用法说明 |
* | 重复0次或者多次 |
+ | 重复一次或更多次 |
? | 重复0次或者1次 |
{n} | 重复n次 |
{n,} | 重复n次或者多次 |
{n,m} | 重复n到m次 |
示例 | 匹配项 |
\d+\.\d+ | 小数 |
[1-9]\d*|0 | 整数 |
\d+\.\d+|([1-9]\d*|0) | 整数或小数 |
\d+\.?\d* | 整数或小数 |
\d+(\.\d+) |
注意:\d+\.\d* 这里会匹配出【1.】满足了条件 这样是不合理的。
5.贪婪匹配
在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配。
\* | 无线匹配 |
\+ | 至少匹配一次 |
孙.{1,3} | 孙匹配最多三次(贪婪) |
6.转义
r:在字符串前加r,让整个字符串不转义。
7.惰性匹配
手动设置,尽可能少的匹配。
示例 | 用法 |
a.* | 以a开头任意字符 |
a.*? | ?控制.* 非贪婪取最少次 |
a.*x | 首个a与最后一个x,连同之间都取出来(回溯算法) |
a.*?x | 首个a与首个x,连同之间都取出来 |
8.总结:
8.1 ret=sorted(list) 占内存,生成一个新的列表
8.2ret=reversed(list) 可迭代的iterator,用list包装
注意:list本身提供方法,对list自身进行修改。
内置函数是在生成一个新的
8.3 random 不重复随机数据
choice 可能出现重复的数据
8.4
length//2===》abcabc》range(1,3)=》ab
length//2+1===》abcabc》range(1,4)=》abc
8.5
全球时间戳一样,只是结构化时间不一样 东八区北京和伦敦的时间区别
8.6
双端队列和列表区别:
效率——底层数据结构上
8.9
repr函数:
repr() 函数将对象转化为供解释器读取的形式。(之前掉过坑 print没打印出换行符,但是加了repr就显示出来了)