正则表达式SoEasy 9 分行匹配:尖号与美元符号(课后习题答案)

avatar 2017年5月7日20:31:02 2 1,826

加入VIP,可以享受无广告视频播放!更可享受教程提前看!详情猛戳:VIP介绍

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

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]$

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

最后的结果:

正则表达式SoEasy 9 分行匹配:尖号与美元符号(课后习题答案)

(2)

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

最后的结果:

正则表达式SoEasy 9 分行匹配:尖号与美元符号(课后习题答案)

(3)

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

最后的结果:

正则表达式SoEasy 9 分行匹配:尖号与美元符号(课后习题答案)


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}$

最后的结果:

正则表达式SoEasy 9 分行匹配:尖号与美元符号(课后习题答案)

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

 


以下是我们的视频教程:

在线观看:

 

 

高清源文件下载:

内容已经隐藏,请注册为本站会员后查看

 

 

感谢大家的收看,我们下期再见!

avatar

发表评论

您必须才能发表评论!

目前评论:2   其中:访客  2   博主  0

    • avatar wgt521 4

      信用卡归类第1题答案有点小问题,会取到前16位符合要求的16位以上的数
      正确为:^4026d{12}$|417500d{10}$|4405d{12}$

      • avatar 雪山凌狐教程管理员 4

        感谢提出建议~好好学习~