1.如果要对有序的变量进行奇偶操作如:字符串,列表,元组,建议使用切片操作
打印出奇位数索引值
def func(l): return l[1::2] print(func([1,2,3,4,5]))
2.比较运算符返回结果为布尔值
3.判断不为空可以直接用if x
4.三元运算符
判断大小 a if a>b else b
变量 = 条件返回True的结果 if 条件 else 条件返回False的结果
必须要有结果,必须有if和else,只能是简单的情况
5.正则默认是贪婪匹配,是从后面向前匹配
<a>.....</a>123
<.*> 先匹配</a>中的>再匹配到<a>中的<,结果是<a>.....</a>
在量词后面加上?就是非贪婪匹配
<.*?>是先找到第一个符合‘>‘后,匹配前面所有的,结果是<a>
.不能匹配换行符
6.匹配10位以上至少含有一位数字,一位字母,不包含其他特殊字符
第一种:^(?=[a-zA-Z]*[0-9])(?=[0-9]*[a-zA-Z])[a-zA-Z0-9]{10,}$
或
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{10,}$
第二种:len(data) > 9 and all(re.search(i, data) for i in ('[A-Z]', '\d', '[a-z]'))
第三种:
letters = set(data)
return bool(len(data) >= 10 and upper & letters and lower & letters and digits & letters)
匹配10位以上至少含有一位数字,一位小写字母,一位大写字母,包含其他特殊字符
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{10,}$
?=
不同的人叫法不一样,你称之为预查
,我更倾向于叫零宽断言
,也就是说?=
只是匹配一个位置,并不匹配具体的字符,所以是零宽
,也就是宽度是0。
所以(?=[a-zA-Z]+)
匹配一个位置,这个位置后面紧跟
至少一个字母,注意此时位置并没有后移;(?=[0-9]+)
也是匹配一个位置,这个位置后面后面紧跟
至少一个数字;
因为(?=[a-zA-Z]+)
和(?=[0-9]+)
都只匹配位置,而不匹配具体的字符,这两个又直接写在了一起,也就是说(?=[a-zA-Z]+)(?=[0-9]+)
意味着这个位置后面紧跟
至少一个字母,同时紧跟
至少一个数字,也就是说这个位置后面的字符既是字母又是数字,显然这样的位置不存在。