正则表达式
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式是一种对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
限定符
1、?
used?
代表 '?' 前面的 ‘d’ 需要出现0次或者1次(例如可以查询到use和used)
2、*
会匹配0个或者多个字符
ab*c
代表b可以没有,也可以出现多次(例如可以查找到ac、abc、abbc等)
3、+
会匹配到1个或者多个字符
ab+c
‘b’ 会出现1次以上(例如abc、abbc等)
4、{}
指定字符出现的次数
ab{6}c
指定 ‘b’ 出现6次
ab{2,6}
希望 ‘b’ 出现2~6次
ab{2,}
希望 ‘b’ 出现2次以上
5、()
以上四个是限制一个字符,如果要限制多个字符,可以使用()
(ab)+
希望 ‘ab’ 出现一次以上(例如ab、abab等)
“或”运算符
1、|
a cat|dog
要么是a cat,要么是dog
a (cat|dog)
要么是a cat,要么是a dog
字符类
匹配一个单词
1、[]
要求匹配的字符只能取自与它们
[abc]
希望找到abc
[abc]+
希望找到由abc三个字母构成的词(例如:abc、aabc、bca)
[a-zA-Z0-9]+
代表所有的英文字符和数字
2、^
匹配除了尖括号后面列出的以外的字符
[^0-9]+
表示找出来数字以外的词(例如ab、r er等)
元字符
1、\d
- 数字字符
- 等同于写的[0-9]
2、\w
- 单词字符
- 所有的英文字符、数字、下划线
3、\s
- 空白符
- 包含Tab和换行符
4、\D
- 符数字字符
5、\W
- 非单词字符
6、\S
- 非空白字符
7、.
- 代表任意字符
- 不包含换行符
贪婪与懒惰匹配
<.+>
对于下面字段:<span><b>This is a sample text</b></span>
上面的表达式会全部匹配,这是贪婪匹配
如果要的不是这个结果,可以改为
<.+?>
此时匹配的是:<span>、<b>、<b\>、</span>
这是懒惰匹配
项目
最近做了登录、注册、忘记密码的页面:
项目结构:
- src
- resources
- client(客户)
- controller(控制器)
- image(图片)
- sample(fxml文件)
- server(服务)
- tool(工具)
- test(测试)
- models(模型)
- resources
sample(fxml文件)
- Login.fxml(登录)
- RegisterTeacher.fxml(注册)
- ForgetPassword.fxml(忘记密码)
- ClassroomInteraction.fxml(班级)
- CreateClass.fxml(创建班级)
- JoinClass.fxml(加入班级)
- Quiz.fxml(测验)
- SignIn.fxml(签到)
- StudentDashboard.fxml(学生总表)
- TeacherDashboard.fxml(老师总表)
- RandomSelection.fxml(随机选人)
- PublishHomework.fxml(发布作业)
- HomewordSubmission.fxml(提交作业)
- HomeworkManagement.fxml(作业管理)
- DownloadMaterials.fxml(下载文件)
- RejectHomework.fxml(打回作业)
- CorrectHomework.fxml(批改作业)
controller(控制器)
对每一个fxml文件创建一个对应的java控制类:
- LoginController.java
- RegisterController.java
- ForgetPasswordTest.java()
- ClassroomInteractionController.java
- CreateClassController.java
- JoinClassController.java
- QuizController.java
- SignInController.java
- StudentDashboardController.java
- TeacherDashboardController.java
- RandomSelectionController.java
- PublishHomeworkController.java
- HomewordSubmissionController.java
- HomeworkManagementController.java
- DownloadMaterialsController.java
- RejectHomeworkController.java
- CorrectHomeworkController.java
models(模型)
创建与数据库对应的模型类:
- User.java
- Student.java
- Teacher.java
- Classroom.java
- Material.java
- HomeworkSubmission.java
- Homework.java
server(服务)
创建服务类来处理不同功能模块的业务逻辑:
- UserService.java
- ClassroomService.java
- MaterialSevice.java
- homeworkSevice.java
tool(工具)
创建工具类处理公共功能
Main主类
启动javaFX程序
1.用户表(user)
- id(用户ID,主键)
- username(用户名)
- name(姓名)
- email(邮箱)
- password(密码)
- userTyte(用户类型)
- create_at(创建时间)
- update_at(更新时间)
2.班级表(class)
- id(班级ID,主键)
- name(班级名称)
- teacher_id(教师ID,外键)
- create_at(创建时间)
- update_at(更新时间)
3.用户-班级表
- id(关系ID,主键)
- user_id(用户ID,外键)
- class_id(班级ID,外键)
4.作业表(homework)
- id(作业ID,主键)
- class_id(班级ID,外键)
- content(作业内容)
- type(作业类型:主观题、选择题)
- createDate(发布时间)
- dueDate(截止时间)
5.学生作业表(student_homework)
- id(学生作业ID,主键)
- user_id(用户ID,外键)
- homework_id(作业ID,外键)
- submissionType(提交类型:图片,文字,文件)
- status(作业状态:未提交,已提交,已打回,已批改)
- create_at(创建时间)
- update_at(更新时间)
6.课堂互动表(class_interaction)
- id(互动ID,主键)
- class_id(班级ID,外键)
- teacher_id(教师ID,外键)
- type(类型:签到、问题抢答、随机选人)
- update(更新时间)
7.发布的资料表(materials)
- id(资料ID,主键)
- class_id(班级ID,外键)
- teacher_id(教师ID,外键)
- title(标题)
- file(文件路径)
- update(更新时间)