OOpre Lec4-输入解析的结构性设计
明明应该是国庆假期的,🐭🐭却要来上op(哭)
Lec4-输入解析的结构性设计
输入序列结构的特征分析
为什么需要输入解析?
-
如果用户输入的数据格式不正确获证解析出错,就会导致结果错
garbage in$\rightarrow$garbage out
-
方便用户交互与体验
-
便于维护
输入解析的步骤
- 获取输入
- 提取数据
- 验证数据
- 转换为程序内部数据
输入序列结构到对象层次结构的映射
-
输入解析
将输入数据从原始格式转换为程序所能处理的**数据(结构)**的过程
-
对象构造
将输入解析的**数据(结构)映射到对象(层次结构)**的过程
需要设计合适的对象模型(数据结构设计)
正则表达式的模式结构介绍
啊啊啊都一节课过去了,这个最重要的部分他怎么还没开始讲(小声)
语法介绍
符号 | 含义 |
---|---|
* | 匹配前面的模式零次或多次 |
+ | 匹配前面的模式一次或多次 |
? | 匹配前面的模式零次或一次 |
{n} | 匹配前面的模式恰好 n 次 |
{n,} | 匹配前面的模式至少 n 次 |
{n,m} | 匹配前面的模式至少 n 次且不超过 m 次 |
[ ] | 匹配括号内的任意一个字符 |
[^ ] | 匹配除了括号内的字符以外的任意一个字符 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |
( ) | 用于分组和捕获子表达式 |
( ?) | 非贪婪匹配 |
(?: ) | 用于分组但不捕获子表达式 |
\ | 转义字符,用于匹配特殊字符本身 |
. | 匹配任意字符(除了换行符) |
| | 用于指定多个模式的选择 |
\d | 匹配任意数字字符 |
\D | 匹配任意\d不能匹配的字符 |
\w | 匹配任意字母数字或下划线字符 |
\W | 匹配任意\w不能匹配的字符 |
\s | 匹配任意空白字符 |
\S | 匹配任意非空白字符 |
贪婪匹配
正则表达式默认采用贪婪匹配——任何一个模式,都会尽可能匹配多个字符
在模式表达式后添加?,即代表非贪婪匹配
层次正则
如果查找元字符本身,比如查找.,或者*,就出现了问题:没法指定它们,因为被解释成其它的意思,这时必须使用\来取消这些字符的特殊意义
作业内容
引入战斗模式和战斗日志(原神怎么你了)🤣👉🤡
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自fysszlr's blog
评论 ()