1.匹配密码,密码必须是由6位数字与字母组成,并且不能是纯数字也不能是纯字母
知识点:
?!pattern,表示在没有配到pattern的字符串的前提下,再进行后续的正则表达式匹配,后续匹配仍然从被匹配字符串的头开始
答案:
print(re.search("(?!^[0-9]+$)(?!^[a-zA-Z]+$)^[0-9A-Za-z]{6}$", "123asf").group())
解释:
在匹配(?!^[0-9]+$)以及(?!^[a-zA-Z]+$)过后,如果字符串成功后在从头去匹配(?!^[a-zA-Z]+$),最终匹配完。
2.匹配密码,密码强度:强,必须包含大写,小写和数字,和特殊字符(!,@,#,%,&),且大于6位
知识点:
?=pattern,表示在配到pattern的字符串的前提下,再进行后续的正则表达式匹配,后续匹配仍然从被匹配字符串的头开始
答案:
while True:
pwd = input("please your password: ").strip()
pwd_pattern = re.compile("(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#%&])^([a-zA-Z0-9!@#%&]){6,}$")
if pwd_pattern.search(pwd) is None:
print("密码强度不够")
else:
break
解释:
(1)首先是(?=.*[A-Z])匹配,.*表示密码中可以包含多个字符,[A-Z]代表密码中需要包含至少一个大写字母,注意一定不要去掉.*写成(?=[A-Z]),那样表示密码只能由一个字符组成,该字符是大写字母
(2)其次是(?=.*[a-z])匹配,同上,确保密码中必须至少有一个小写字母
(3)然后是(?=.*[0-9])匹配,同上,确保密码中必须至少有一个数字
(4)然后是(?=.*[!@
(5)最后是^([a-zA-Z0-9!@
3.匹配email
答案:
print(re.findall("(?:[a-zA-Z0-9]+)@(?:[0-9a-zA-Z]+).com", "18611323113@163.com xxx@qq.com"))
4.匹配身份证
答案:
your_id = input(">>: ").strip()
print(re.findall("^([0-9]){17}([0-9]|X)$", your_id))
5.匹配用户名,包含字母或者数字,且8位
答案:
print(re.findall("^[0-9a-zA-Z]{8}$", "egonlinh"))
6.要求输入的内容只能是汉字
答案:
name = input('>>: ').strip()
print(re.search(r'[\u4E00-\u9fa5]+', name))
7.取出字符串里的数字
答案:
print(re.findall(r'\d+(?:\.\d+)?', 'sww123kw11.333e2lkd'))
8.取出所有负整数
错误答案:
print(re.findall(r'-\d+', '-12,3,54,-13.11,64,-9'))
正确答案:
print(re.findall(r'(?!-\d+\.\d+)-\d+', '-12,3,54,-13.11,64,-9'))
9.取出字符串中的所有数字
答案:
print(re.findall(r'\-?\d+(?:\.\d+)?', '-12.9,3.92,54.11,64,89,-9,-45.2'))
10.取出字符串中的所有负数
答案:
print(re.findall(r'\-\d+(?:\.\d+)?', '-12.9,3.92,54.11,64,89,-9,-45.2'))
11取出字符串里的所有的非负浮点数
答案:
print(re.findall(r'\d+\.\d+', '-12.9,3.92,54.11,64,89,-9,-45.2'))
12.取出字符串里的特定信息
答案:
msg = """
中文名 贝拉克·侯赛因·奥巴马
外文名 Barack Hussein Obama II
别名 欧巴马
性 别 男
国籍 美国
民 族 德裔族
出生地 美国夏威夷州檀香山
出生日期 1961年8月4日
职 业政治家、律师、总统
毕业院校 哥伦比亚大学,哈佛大学
信 仰新教
主要成就 1996年伊利诺伊州参议员
主要成就 美国第56届、57届总统 2009年诺贝尔和平奖获得者 时代周刊年度风云人物2008、2011 任期内清除本·拉登
代表作品 《我相信变革》《我父亲的梦想》《无畏的希望》
所属政党美国民主党
血 型 AB型
学 院西方学院
妻 子 米歇尔·拉沃恩·奥巴马
"""
print(re.findall("外文名 (.*)", msg))
print(re.findall('出生日期 (\d{4})年(\d+)月(\d+)日', msg))
print(re.findall('妻 子 (\S+)', msg))
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步