Java(四):Scanner & 正则表达式
1. 章节简介
1.1 课程简介
这个系列的文章,我会把我在RIT学习的CS研究生相关课程作业分享在这里,希望能帮助有需要的童鞋。
课程名称:CSCI.605.04 - Adv OO Programming Concepts(前置课程)
任课老师:Hans-Peter Bischof
作业链接:传送门
本章学习笔记:传送门
学习建议:本章学习的内容都需要掌握;
※ 注意:本系列的文章大部分内容都是英文文献和资料,对英文阅读的能力要求较高,如有疑问,请随时联系我哒~
1.2 本章知识要点
第一题:实现一个小游戏,游戏本身不难,就是熟悉使用Scanner类,建议大家自己理解题目写一遍,debug,实在有不懂得地方再去看答案,这样进步更大一些哦
第二题:Java正则表达式得使用,这里简单讲讲题目里面涉及到的正则知识:
starts with ’a’ followed by one digit or more digits
以a开头,后面有一个或多个数字
以…开头用^, 以…结尾用$,但需要开启多行匹配才有效果,单行匹配没有效果的。然后数字匹配:\d;匹配一个或多个:+;
"^a\\d+$"
a word with the vowels ’aeiou’ in order and each vowel can appear only once
包含由以下元音字母组成的字符串,且里面的元音字母只能出现一次
匹配某个内容的一个:[内容],不匹配某个内容中的所有:[ ^内容]。比如[a-z]匹配26个小写字母任意一个,[ ^a-z]表示不能有26个小写字母;某个内容出现零次或多次:*
"[^aeiou]*aeiou[^aeiou]*"
starts with ’a’ followed by 3 digits in the range between 1 and 3 only
以a开头,后面有三位数字,且数字范围在1~3
需要匹配每个内容规定次数:{次数},比如\d{3},表示匹配数字3次;另外,表示匹配规定次数,可以用一下规则:
规则 | 说明 |
---|---|
X? | 匹配X一次或零次 |
X* | 匹配X零次或多次 |
X+ | 匹配X一次或多次 |
X{n} | 匹配X刚好n次 |
X{n, } | 匹配X至少n次 |
X{n,m} | 匹配X至少n次,但不多于m次 |
所以下面这些匹配规则是等价的:
规则1 | 规则2 |
---|---|
X? | X{0, 1} |
X* | X{0,} |
X+ | X{1,} |
"^a[1-3]{3}$"
starts with ’a’ followed by least 3 digits in the range between 1 and 3 only
以a开头,后面至少有三位数字,且数字范围在1~3
"^a[1-3]{3,}$"
starts with ’a’ followed by between 1 and 2 digits in the range between 8 and 9 only
以a开头,后面有1 ~ 2位数字,且数字范围在8~9
"^a[8-9]{1,2}$"
includes only lower case characters, but not the character ’h’, ’p’, and ’b’
仅包含小写字母,但是不含以下三个小写字母:h, p, b
当我们要匹配一个范围的内容,但是想去除范围中的某些内容可以用[] 和 &&:
规则1 | 规则2 |
---|---|
[a-z&&[^bc]] | 匹配a~z的26个小写字母,但是不包含b和c,等价于[ad-z] |
"[a-z&&[^hpb]]*"
上面的写法会包括空字符串"",如果想去除这个匹配结果,可以写成:
"[a-z&&[^hpb]]+"
2. 答案 & 代码
1)老师提供的参考答案:就在题目最下方所提供的代码;
2)自己的答案:请见这里
3. 免责声明
※ 本文之中如有错误和不准确的地方,欢迎大家指正哒~
※ 课程相关的版权归各个任课老师所有,博主自己的作业代码归博主自己所有;
※ 此项目仅用于学习交流,请不要用于任何形式的商用用途,谢谢呢;