明明应该是国庆假期的,🐭🐭却要来上op(哭)


Lec4-输入解析的结构性设计

输入序列结构的特征分析

为什么需要输入解析?

  • 如果用户输入的数据格式不正确获证解析出错,就会导致结果错

    garbage in$\rightarrow$garbage out

  • 方便用户交互与体验

  • 便于维护

输入解析的步骤

  1. 获取输入
  2. 提取数据
  3. 验证数据
  4. 转换为程序内部数据

输入序列结构到对象层次结构的映射

  • 输入解析

    将输入数据从原始格式转换为程序所能处理的**数据(结构)**的过程

  • 对象构造

    将输入解析的**数据(结构)映射到对象(层次结构)**的过程

    需要设计合适的对象模型(数据结构设计)

正则表达式的模式结构介绍

啊啊啊都一节课过去了,这个最重要的部分他怎么还没开始讲(小声)

语法介绍

符号 含义
* 匹配前面的模式零次或多次
+ 匹配前面的模式一次或多次
匹配前面的模式零次或一次
{n} 匹配前面的模式恰好 n 次
{n,} 匹配前面的模式至少 n 次
{n,m} 匹配前面的模式至少 n 次且不超过 m 次
[ ] 匹配括号内的任意一个字符
[^ ] 匹配除了括号内的字符以外的任意一个字符
^ 匹配字符串的开头
$ 匹配字符串的结尾
\b 匹配单词边界
\B 匹配非单词边界
( ) 用于分组和捕获子表达式
( ?) 非贪婪匹配
(?: ) 用于分组但不捕获子表达式
\ 转义字符,用于匹配特殊字符本身
. 匹配任意字符(除了换行符)
| 用于指定多个模式的选择
\d 匹配任意数字字符
\D 匹配任意\d不能匹配的字符
\w 匹配任意字母数字或下划线字符
\W 匹配任意\w不能匹配的字符
\s 匹配任意空白字符
\S 匹配任意非空白字符

贪婪匹配

正则表达式默认采用贪婪匹配——任何一个模式,都会尽可能匹配多个字符

在模式表达式后添加?,即代表非贪婪匹配

层次正则

如果查找元字符本身,比如查找.,或者*,就出现了问题:没法指定它们,因为被解释成其它的意思,这时必须使用\来取消这些字符的特殊意义

作业内容

引入战斗模式和战斗日志(原神怎么你了)🤣👉🤡