Perl正则表达式--练习1
练习题目: 1.?打印所有含有模式Street的行。 2.?打印名字与B或b相匹配的行。 3.?打印与Ker匹配的行。 4.?打印区号为408的电话号码。 5.?打印Gortz的名字和地址。 6.?以大写形式打印Ephram的名字。 7.?打印不含4的行。 8.?将William的名字改为Siegfield。 9.?打印Tommy?Savage的生日。 10.?打印收入超过$40,000的名字。 11.?打印在6月出生的人的名字。 12.?打印Massachusetts的邮件编码。?? 练习文件内容: #?cat?sample.txt Tommy?Savage:408?724?0140:1222?Oxbow?Court,?Sunnyvale,CA?94087:5/19/66:34200 Lesle?Kerstin:408?456?1234:4?Harvard?Square,?Boston,?MA?02133:4/22/62:52600 JonDeLoach:408?253?3122:123?Park?St.,?San?Jose,?CA?94086:7/25/53:85100 Ephram?Hardy:293?259?5395:235?Carlton?Lane,?Joliet,?IL?73858:8/12/20:56700 Betty?Boop:245?836?8357:635?Cutesy?Lane,?Hollywood,?CA?91464:6/23/23:14500 William?Kopf:846?836?2837:6937?Ware?Road,?Milton,?PA?93756:9/21/46:43500 Norma?Corder:397?857?2735:74?Pine?Street,?Dearborn,?MI?23874:3/28/45:245700 James?Ikeda:834?938?8376:23445?Aster?Ave.,?Allentown,?NJ?83745:12/1/38:45000 Lori?Gortz:327?832?5728:3465?Mirlo?Street,?Peabody,?MA?34756:10/2/65:35200 Barbara?Kerz:385?573?8326:832?Ponce?Drive,?Gary,?IN?83756:12/15/46:268500 1.?打印所有含有模式Street的行 while?(<DATA>)?{ ????($name,?$phone,?$address,?$birth,?$salary)?=?split(":",?$_); ????print?if?/Street/; } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 2.?打印名字与B或b相匹配的行
while?(<DATA>)?{ ????($name,?$_); ????print?if?$name?=~?/[Bb]/; } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 3.?打印与Ker匹配的行
while?(<DATA>)?{ ????($name,?$_); ????print?if?/Ker/; } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 4.?打印区号为408的电话号码
while?(<DATA>)?{ ????($name,?$_); ????print?if?$phone?=~?/408/; } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 5.?打印Gortz?的名字和地址
while?(<DATA>)?{ ????($name,?$_); ????print?"$name?--?$addressn"?if?$name?=~?/Gortz/; } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 6.?以大写形式打印Ephram?的名字
while?(<DATA>)?{ ????($name,?$_); ????print?"U$nameE"?if?$name?=~?/Ephram/; } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 7.?打印不含4?的行
while?(<DATA>)?{ ????($name,?$_); ????print?unless?($.?==?4); } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 8.?将William?的名字改为Siegfield
while?(<DATA>)?{ ????($name,?$_); ????print?if?s/William/Siegfield/; } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 9.?打印Tommy?Savage?的生日 while?(<DATA>)?{ ????($name,?$_); ????print?"$name?birth?is:?$birthn"?if?$name?=~?/Tommy?Savage/; } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 10. 打印收入超过$40,000的名字 while?(<DATA>)?{ ????($name,?$_); ????print?"$.?--?$namen"?if?($salary?>?40000); } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 11. 打印在6月份出生的人的名字 while?(<DATA>)?{ ????($name,?$_); ????($birth_month,?$birth_day,?$birth_year)?=?split("/",?$birth); ????print?$name?if?$birth_month?=~?/6/; } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: 12. 打印Massachusetts的邮件编码 while?(<DATA>)?{ ????($name,?$_); ????($street,?$city,?$capital)?=?split(",",?$address); ????print?$',?"n"?if?$address?=~?/MA/; } __DATA__ Tommy?Savage:408?724?0140:1222?Oxbow?Court,?IN?83756:12/15/46:268500 运行结果为: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |