这节课我们来讲解一下上节课布置的三道课后习题。三道不少,算是一个阶段性小测验吧。希望大家都能顺利做出来。
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
以下是我们的视频教程:
在线观看:
高清源文件下载:
内容已经隐藏,请注册为本站会员后查看
感谢大家的收看,我们下期再见!
2018年1月7日 下午6:46 1F
登录回复
信用卡归类第1题答案有点小问题,会取到前16位符合要求的16位以上的数
正确为:^4026d{12}$|417500d{10}$|4405d{12}$
2018年1月7日 下午6:52 2F
登录回复
感谢提出建议~好好学习~