精易论坛

标题: 正则表达式SoEasy 9 分行匹配:尖号与美元符号(课后习题答案) 讲师:雪山凌狐 [打印本页]

作者: 雪山凌狐    时间: 2017-6-24 06:15
标题: 正则表达式SoEasy 9 分行匹配:尖号与美元符号(课后习题答案) 讲师:雪山凌狐
当当当!!!欢迎收看雪山凌狐教程!我是讲师雪山凌狐。
感谢大家点进来查看我们这套教程的第9课课后习题答案!!!一流精良制作PPT+视频教程详细讲解,包君满意!
如果觉得课程对你有帮助的话,欢迎给我赠送好评和精币哦~他们是免费的,不会消耗自己的哟~让更多的人看到!


本课视频教程:
http://v.youku.com/v_show/id_XMjc0NDM3NTg3Ng==.html

这节课我们来讲解一下上节课布置的三道课后习题。三道不少,算是一个阶段性小测验吧。希望大家都能顺利做出来。

1. 分类产品标签

我们有以下的这一段源文本:

PQ92819x
TKSNC82J4A
AJEIZMFWEL271827
RFTJ9WZMS28
CIW92KJSD
PQ38400X
pq38323X
RFT8291912
AJSKWJS83928
PQ99999XX
RFT00000009
RRFTKMZSDDS4
CSE101WOWZA
RFTK9DMG828
BAWDKMJDW8291242
PQ12341X

请把源文本复制到你的正则表达式测试工具比如精易编程助手中,然后完成如下匹配任务:

(1)请匹配出所有以“PQ”开头,接着是5个数字(00000到99999),然后以大写或者小写“X”结尾的行。允许有子匹配文本(用上小括号)。

提示:答案有3个。

(2)请匹配出所有以“RFT”开头,接着是7个大写字母或者数字的任意组合,最后以一个数字结尾的行。

提示:答案有3个。

(3)请匹配出所有以“A”开头,接着是7到10个大写字母,接着是3到7个数字结尾的行。

提示:答案有1个。

解析:

这道题通过分析,我们需要使用多行匹配来完成,记得在测试工具的右上角勾选上全局,区分大小写以及多行模式。

(1)

^PQ\d{5}(x|X)$

这种写法会有子匹配文本,如果想不出现子匹配文本,我们可以写成这样:

^PQ\d{5}[xX]$

使用中括号来替代竖线选择符。


最后的结果:

(2)

^RFT[0-9A-Z]{7}\d$

最后的结果:

(3)

^A[A-Z]{7,10}\d{3,7}$

最后的结果:



2. 找出所有符合条件的课程名

我们有以下的这一段源文本:

CSE 101
AMS 310
PHY 132
Wrt 102
CSE114
ECO330
CHNN 101
Ams 261
MAT    200
WRT101
frn1012
che 299
C-S-E 114
C.S..E215
AMS-211
B,,,I.-O 255
-ECO 102

其中每一行都是一个课程名。请按下列要求找出所有有效课程名写法的行。课程首先是以三个大写或小写字母开头,接着是一个可有可无的空格,然后是三个数字结尾,这是一个有效的课程名。所以,理想状态下,每一个课程大概都是类似“CSE 101”或者“Phy 132”这样的写法。但是在实际情况下,有的时候因为人工误输入的原因,造成在字母与字母之间,可能会有,-.这几种字符的出现而且出现次数不定,位置不定。但是即使这样我们还是认为这些课程名属于有效的课程名。

本题答案提示:共有12个。

解析:

这道题我们的难点在于课程名字母间可能穿插几个特殊符号,而且次数不定。特殊符号我们可以用字符集[]来包含,次数不定可以用星号来表示可以不出现也可以出现多次。特别注意的是,连字符和点号是特殊字符,需要在它们前面使用转义字符\才能匹配它们自身,关于转义字符的使用我们会在后面的课程中详细讲解。

以下是答案:

^[a-zA-Z][\.\-,]*[a-zA-Z][\.\-,]*[a-zA-Z][ ]?\d{3}$


最后的结果:

结果:

1   CSE 101
2   AMS 310
3   PHY 132
4   Wrt 102
5   CSE114
6   ECO330
7   Ams 261
8   WRT101
9   che 299
10  C-S-E 114
11  C.S..E215
12  B,,,I.-O 255





3. 信用卡归类

我们有以下的这一段源文本:

4175007282312321
5025007282312321
62250072875454563
30428763928172
417500728231987
50550072823127458
62250072875441254563
30628763928172

在这些信用卡信息中,不同的卡号代表不同的信用卡公司品牌,请完成以下任务,找出符合某个公司品牌的信用卡卡号:

(1)ALPHA公司的信用卡卡号为16位数字,都是以4026, 417500或4405开头的。

(2)BETA公司的信用卡卡号为16位数字,卡号开头数字范围为500-549。

(3)GAMMA公司的信用卡卡号为16-19位数字,卡号以数字62开头。

(4)OMEGA公司的信用卡卡号为14位数字,卡号开头数字范围为300-305。


解析:

这道题的关键难点在于卡号的位数确定,所以我们位数不能定义错误。

(1)

^4026\d{12}|417500\d{10}|4405\d{12}$


最后的结果:

4175007282312321

(2)

^5[0-4]\d{14}$

最后的结果:

5025007282312321

(3)

^62\d{14,17}$

最后的结果:

62250072875454563

(4)

^30[0-5]\d{11}$

最后的结果:

30428763928172


高清源文件下载:


第10课地址:

暂未发布,请耐心等待。





补充内容 (2017-6-25 09:47):
第10课地址:http://125.confly.eu.org/thread-14036336-1-1.html
作者: 乾亦元    时间: 2017-6-24 11:09
谢谢老师,辛苦了
作者: nbxxhzh    时间: 2017-6-24 12:20
讲得很好,应是最优的课程

作者: sxlldaj    时间: 2017-6-24 21:37
辛苦了,谢谢分享

作者: Cbise    时间: 2017-6-27 01:12
辛苦了,谢谢分享#
作者: jjsir    时间: 2017-6-27 21:16
课后习题答案

作者: 喜神娃娃    时间: 2017-9-28 11:45
谢谢老师,这道题已经会了就是二题的?不太明白
作者: 雪山凌狐    时间: 2017-9-28 16:30
喜神娃娃 发表于 2017-9-28 11:45
谢谢老师,这道题已经会了就是二题的?不太明白

可以多多思考一下或者加入咱们的QQ群再咨询
作者: 领跑中国许仙    时间: 2018-6-8 19:40
辛苦了,谢谢分享!




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4