# 正则表达式是什么?
# 前端
# python
# java
#
# 正则表达式:只和字符串打交道
# 第一:从一大段文字中获取符合条件的内容,爬虫
# 第二:检测某一个字符串,是否完全符合规则,表单的验证
#
# 字符组
# 匹配所有的数字[0-9]
# 匹配所有的小写字母[a-z]
# 匹配所有的大写字母[A-Z]
# 匹配所有的字母数字[0-9a-zA-Z]
# [a-Z] 不能a-Z,只能从ASCII码小的值到大的值 ,如:[A-z]
#
#
# 元字符
#
# \d 匹配所有的数字[0-9]
# \w 匹配所有的字母数字和下划线[0-9a-zA-Z_]
# \s 匹配所有的空白符,包含(\n \t 空格)
#
#
# \D 匹配所有非数字
# \w 匹配所有非字母数字和下划线
# \s 匹配所有非空白符
#
# . 匹配除了换行符以外的任意字符
# ^匹配一个字符串的开始
# $ 匹配一个字符串的结束
# ^$如果两个一起用必须和字符串的内容一模一样
#
# [^123]非字符组,只要不是123,都能匹配上
# | 或 如果两个字符串很相似,我们需要把字符串长的放前面
# | 经常跟()分组一起用^(wind123|wind)$
#
# 量词:
# {n} 表示匹配n次
# {n,}表示匹配至少n次,尽量多的匹配
# {n,m}表示匹配n,m次,尽量多的匹配
# + 1-无穷大
# * 0-无穷大 ,* 前面元字符没有约束进去,前面还需要加字符组[0-9]\d*
# ? 0或1次
#
# 贪婪匹配:尽可能多的匹配
# 惰性匹配:尽可能少的匹配,在量词后面加上?号
#
# 匹配任意的正整数:[0-9]\d*
# 匹配任意的小数 \d+\.\d+ 或 \d+\.\d*
#
# 匹配任意的整数或小数: \d+(\.\d+)?
#
# 转义符 \取消转义 \d+\.\d+ 取消.的含义,让.变成一个普通的.
re模块
import re
# findall 匹配所有匹配项,返回一个列表
# ret=re.findall('\d+','hello123,world456')
# print(ret)
# search 只匹配第一个匹配项,返回是一个对象,需要用group()取值
# ret2=re.search('\d+','hello123,world456')
# print(ret2.group())
# match 等于search加了^号
# ret3=re.match('\d+','1hello123,world456')
# print(ret3)
# print(ret3.group())
# re.split()
# s = 'wind666lis444ir777'
# ret4=re.split('\d+',s)
# print(ret4)
# sub 替换
# rer=re.sub('\d','OK','wind6666lis4446ir7776')
# print(rer)
# rer=re.sub('\d+','OK','wind6666lis4446ir7776',1) # 指定替换个数
# print(rer)
# re.compile() 预编译 ,降低时间成本
# rule = re.compile('\d+')
# ret6=rule.findall('wind6666lis4446ir7776')
# print(ret6)
# re.finditer() # 节省空间,变成迭代器
# iter_=re.finditer('\d+','wind6666lis4446ir7776')
# print(iter_)
# for i in iter_:
# print(i.group())
# findall 分组优先的规则
# [0-9] 接收了前面第一个数字1,4,6不显示
# ret3=re.findall(r'[0-9](\d+)','a127,b458,c679')
# print(ret3)
# 取消分组优先的规则
# 1,4,6也会显示出来
# ret3=re.findall(r'\d(?:\d+)','a127,b458,c679')
# print(ret3)
# 作业
# 1.使用正则来匹配11位的手机号
# import re
# tel=input('请输入手机号码:')
# ret=re.match(r'^1[32657]\d{9}$',tel)
# if ret:
# print('匹配成功')
# else:
# print('匹配不成功')
# 2. 验证输入用户名和QQ号是否有效并给出对应的提示信息
# 要求:
# 用户名必须由字母、数字或下划线构成且长度在6~20个字符之间
# QQ号是5~12的数字且首位不能为0
# import re
# tel=input('请输入用户名:')
# ret=re.match(r'^1[678910]\d{20}$',tel)
# tel1=input('请输入qq号:')
# ret1=re.match(r'^5[678910]\d[12]>0$',tel1)
# if ret:
# print('匹配成功')
# else:
# print('匹配失败')
# 3.匹配以“www”起始且以“.com”结尾的简单Web域名:例如,http://www.yahoo.com ,也支持其他域名,如.edu .net等
import re
data=input('请输入域名:')
m=re.match(r'(http://)?(www.+)\.(com|edu|net)',data).group()
print(m)
# 4.匹配所有能够表示Python浮点数的字符串集
# import re
# s=input('请输入浮点型字符串')
# r=re.findall(r'\d+\.\d{1,}|\d+.',s)
# print(r)
# 5.用户名匹配
# 要求:
# 1.用户名只能包含数字 字母 下划线
# 2.不能以数字开头
# 3.⻓度在 6 到 16 位范围
import re
# tel=input('请输入用户名:')
# ret=re.match(r'^\D{0}$',tel)
# tel1=input('')
# ret1=re.match(r'^6[78910]\d{16}$',tel1)
# if ret:
# print('匹配成功')
# else:
# print('失败')
# 6.密码匹配
# 要求:
# 1.不能包含!@#¥%^&*这些特殊符号
# 2.必须以字母开头
# 3.⻓度在 6 到 12 位范围内
# re_password = re.compile(r'[a-zA-Z][^!@#¥%^&*]{5,11}')
#
# print(re_password.fullmatch('ajsdsdfjdf%sdjk'))
name = r'^[a-zA-Z][^!@#¥%^&*]{5,11}'
print(fullmatch(name, 'E45_mlDE'))
# 7.学生成绩管理系统,写函数版
# 1.查看所有学生成绩
# 2.添加一个学生成绩,如果学员已存在,则不添加成绩,否则添加语文,数学,英语成绩
# 3 .如果学员已存在,则修改一个学生成绩
# 4。如果学员已存在,删除一个学生成绩
# 5.退出程序
#
# while True:
# print('1.查看所有学生的成绩')
# print('2.添加一个学生的成绩')
# print('3.修改一个学生的成绩')
# print('4.删除一个学生的成绩')
# print('5.退出程序')
#
# content = input('请输入你的选项:')
#
#
# def select_student_scores():
# """查看成绩"""
# for sid, value in students_dict.items():
# print('学生姓名:%s,成绩:语文:%d,数学:%d,英语:%d' % (
# value['name'], value['scores']['chinese'],
# value['scores']['math'], value['scores']['english']
# ))
#
#
# def insert_student_scores(student_id,student_name,student_chinese,
# student_math,student_english):
# """添加成绩"""
# students_dict.setdefault(student_id,{
# "name":student_name,
# 'scores':{
# 'chinese':int(student_chinese),
# 'math':int(student_math),
# 'english':int(student_english)
# }
# })
#
#
# def update_student_scores(student_id,student_chinese,
# student_math,student_english):
# """修改成绩"""
# dic = {
# 'chinese': int(student_chinese),
# 'math': int(student_math),
# 'english': int(student_english)
# }
#
# students_dict.get(student_id).update({'scores':dic})
#
#
# def delete_student_scores(student_id):
# """删除成绩"""
# students_dict.pop(student_id)
#
#
# if content == '1':
# select_student_scores()
#
# elif content == '2':
# student_id = input('请输入学生的学号:')
# if student_id.isdigit():
# student_id = int(student_id)
# if student_id in students_dict:
# print('该学员已存在,请勿重复添加!')
# else:
# student_name = input('请输入学生姓名:')
# student_chinese = input('请输入学生语文成绩:')
# student_math = input('请输入学生数学成绩:')
# student_english = input('请输入学生英语成绩:')
# insert_student_scores(student_id,student_name,student_chinese,
# student_math,student_english)
# elif content == '3':
# student_id = input('请输入学生的学号:')
# if student_id.isdigit():
# student_id = int(student_id)
# if student_id in students_dict:
# student_chinese = input('请输入学生语文成绩:')
# student_math = input('请输入学生数学成绩:')
# student_english = input('请输入学生英语成绩:')
# update_student_scores(student_id,student_chinese,
# student_math,student_english)
# else:
# print('该学员不存在')
# else:
# print('输入错误,学号是纯数字')
#
# elif content == '4':
# student_id = input('请输入学生的学号:')
# if student_id.isdigit():
# student_id = int(student_id)
# if student_id in students_dict:
# delete_student_scores(student_id)
# else:
# print('该学员不存在')
# else:
# print('输入错误,学号是纯数字')
#
# elif content == '5':
# print('退出学生成绩管理系统')
# break
#
# else:
# print('请输入1-5之间的数字')
#
# #
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南