day18 正则函数以及pygame
2019-01-16 本文已影响0人
_最美不是下雨天_
1.compile(正则表达式) --->将正则表达式转换为正则对象
print(re.compile('r\d{3}'))
2.fullmatch(正则表达式,字符串) --->让字符串和正则表达式完全匹配
result = re.fullmatch(r'(\d{3})','123')
print(result)
应用:检测字符串内容是否符合要求,例如:检测账号、密码、判断手机号、身份证号等是否合法
匹配对象:1.span 匹配结果在原字符串的位置
2.start和end -匹配到的字符串在原字符串中的开始下标和结束下标
3.group -获取匹配到的字符串(结果是字符串)
4.string -获取原字符串
print(result.start(),result.end())
print(result.span(1))#打印匹配结果的第一个分组,使用的前提示必须有分组
print(result.group())
print(result.group(1))#获取第二个分组匹配到的字符串
print(result.groups())#获取所有分组匹配到的字符串
3.match(正则表达式,字符串)---->让字符串的开头和正则表达式进行匹配,匹配成功返回字符串对象,否则返回None
print(re.match(r'\D\d','s211ka'))
4.search(正则表达式,字符串) ---->在字符串中取匹配第一个符合正则的子串,匹配成功结果是匹配对象,否则是None
print(re.search(r'[\u4e00-\u9fa5]{3}','asd你好吗22askj'))
5.split(正则表达式,字符串)--->将字符串按照正则要求的子串进行切割(返回值是列表)
print(re.split(r'\d+','sahdj123hjk123b,2312k3j'))
6.sub(正则表达式,字符串1,字符串2) ---->将字符串2中能够和正则表达式匹配的子串替换成字符串1,产生一个新的字符串
print(re.sub(r'曾令鹏','*','dsadsadasd操你妈杂种曾令鹏'))
7.findall (正则表达式,字符串) --->在字符串中获取满足条件的所有字符串(结果是列表)
注意:如果正则表达式中分组,直接获取到的是分组中的内容,结果中有多个分组则返回的是元组
print(re.findall(r'\d+[a-z]','das1sd2dsa'))
print(re.findall(r'(\d+)[a-z]','das1sd2dsa'))
8.finditer(正则表达式,字符串) --->在字符串中获取满足正则表达式的所有子串(结果是迭代器,元素是匹配对象)
result = re.finditer(r'\d+[a-z]', 'das1sd2dsa')
print(result)
print(next(result).group())
9.忽略大小写,匹配的越苏条件是放在函数的flags参数中的
print(re.fullmatch(r'[a-z]{2}','dS',re.I))
练习:用户名必须是由字母数字下划线构成且长度在6-20个字符之间qq必须是5-12的数字首位不能为0
re_str=r'[1-9]\d{4,11}'#QQ号
re_str=r'[a-zA-Z\D_]{6,20}'