ad

打开《Python入门与实战》_一步步学会Python_3.7.6 匹配模式:贪婪匹配与非贪婪匹配

admin 132 2023-10-25

【摘要】 本书摘自《Python入门与实战》一书中第1章,第1节,由王跃进主编。

6. 匹配模式:贪婪匹配与非贪婪匹配

贪婪匹配:在满足匹配时,匹配尽可能长的字符串。非贪婪匹配:在满足匹配时, 匹配尽可能短的字符串,只要能匹配即可。默认情况下,采用贪婪匹配模式。

打开《Python入门与实战》_一步步学会Python_3.7.6 匹配模式:贪婪匹配与非贪婪匹配

如果需要修改为非贪婪匹配模式,只要在表示数量的字符的后面加上“?”即可。如:

*?、+?、??、{n,m}?、{n,}?

说明:字符串中的转义字符与正则表达式中的转义字符没有任何关系。如果你使 用一个未加r的字符串作为正则表达式,那么在实际匹配时会首先进行字符串转义,然 后再进行正则表达式转义。

动手实践:请编写描述下列规则的正则表达式。

(1)由大小写字母、数字组成,且长度在[8,20]。

(2)yyyy-yy-yy, 其中y 表示数字。

(3)检验手机号:以13、15、18开头的手机号。

(4)从字符串中提取包含在
    XXX
之间的子字符串 XXX。 参考答案:

(1)pattern =r'^[a-zA-Z0-9]{8,20}$'

(2)pattern =r'^(?:\d{4})-(?:\d{2})-(?:\d{2})$'

(3)pattern =r'^(?:13| 15| 18)\d{9}$'

(4)pattern=r'(?<=
    ).*?(?=
)'

本节我们只是简单介绍了编写正则表达式的一些规则,更深入的内容请参考相关 资源。

练习题

1. 不同的运算符具有不同的优先级,优先级高的运算先执行,优先级低的运算后 执行,同一优先级的运算按从左到右顺序进行。实际上往往难以记住这些运算符的优 先级别,通常是采用()来改变运算次序。请在IDLE 的交互模式执行下面的语句并分 析结果填空。

(1)- 的优先级 ( 高于/低于)**的优先级。

(2)在表达式 a and b 中,如果 a 为 True, 则表达式的值为 ,如果 a 为 False, 则表达式的值为 ;在表达式 a or b 中,如果 a 为 True, 则表达式的值为 , 如果 a 为 False, 则则表达式的值为 。

(3)and 的优先级 (高于/低于)比较运算符。 not 的优先级 ( 高于/ 低于)and 的优先级。

2. 由键盘输入一个非负整数,判断这个非负整数有多少位数,如99输出2,1024 输出4。

3. 分别计算整数1~1000(包括1和1000)的所有奇数的和、所有偶数的和。

4. 由键盘输入n 个学生的成绩,找出最高分,分数之间用空格隔开。

5. 角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数, 则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。例如,假定初始 整数为5,计算过程分别为16、8、4、2、1。程序要求输入一个整数,将经过处理得 到 1 的过程输出来。

输入样例:5输出样例:

6. 国王将金币作为工资,发放给忠诚的骑士。第1天,骑士收到一枚金币;之后 两天(第2天和第3天)里,每天收到两枚金币;之后三天(第4、5、6天)里,每天收到 三枚金币;之后四天(第7、8、9、10天)里,每天收到四枚金币……这种工资发放模式 会一直这样延续下去:当连续 n 天每天收到 n 枚金币后,骑士会在之后的连续n+1 天 里,每天收到n+1 枚金币(n 为任意正整数)。你需要编写一个程序,确定从第一天开始 的给定天数内,骑士一共获得了多少金币。

输入样例:6

输出样例:14

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《Java+EE应用开发实践教程》_读懂新的设计思路_3.1 实验九 MVC 与 DAO 开发模式
下一篇:打开《Python入门与实战》_一步步学会Python_3.1 Python 语法特点
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×