Python核心编程(第三版)正则表达式课后习题

本文提供Python核心编程(第三版)正则表达式篇的课后习题答案,涵盖多种匹配场景,如Python标识符、街道地址、Web域名、整数浮点数表示、电子邮件和URL等,旨在帮助学习者加深理解和提高技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python核心编程(第三版)正则表达式篇课后习题

答案肯定不是唯一的,如果哪里有问题,欢迎指正。
写这篇文章的目的是为正在学Python正则表达式的人和将要学的人提供一个参考,一百个人可能就有一百种做法,在这里写出我的做法,大家互相学习,一起进步,加油。

#1-11. 识别下列字符串:“bat,” “bit,” “but,” “hat,” “hit,” 或 “hut”

import  re
data = 'bat bit btt a ta tib atb but hat hit hut'
patt = '[bh][aiu]t'
m = re.findall(patt,data)
print(m)

#1-2.匹配用一个空格分隔的任意一对单词,比如,名和姓

import  re
data = '3432@#zhou yaping zhou ge'
patt = '([A-Za-z]+\s?)+'
m = re.search(patt,data)
print(m.group())

1-3. 匹配用一个逗号和一个空格分开的一个单词和一个字母。例如,英文人名中的姓和名 的首字母

import  re
data = 'ZHOU ge,wang san,Li SI'
patt = ',|\s'
m = re.split(patt,data)
print(m)

#扩展符号(?x)表示可以使正则表达式中包含空白符

import  re
m = re.search(r'''(?x)
\((\d{3})\)
[ ]
(\d{3})
-
(\d{4})
''', '(800) 555-1212')
print(m.groups())

#1-4. 匹配所有合法的Python标识符

import  re
data = 'a asd _da 32sda jjij221_'
patt = '[_A-Za-z]+[_\w]+'
m = re.findall(patt,data)
print(m)

#1-5.请根据您(读者)本地关于地址的格式写法匹配一个街道地址(你写出的正则表达式要 尽可能通用以匹配任意数目的表示街道名字的单词,包括类型指示)。比如,美国的街道地址使用这 样的格式:1180 Bordeaux
Drive.使你写的正则表达式尽可能通用,要求能够匹配多个单词的街道 名字,如:3120 De la Cruz Boulevard.

import  re
data = '1180 Bordeaux Drive Crus De la'
patt = '\d{4}\s([A-Za-z]+\s?)+'
m = re.match(patt, data)
print(m.group())

#1-6.匹配简单的以“www.”开头,以“.com”作结尾的Web域名,例如:www.yahoo.com.

import  re
data = 'http://www.foothill.edu'
patt = r'(?i)(www:|http:|https:)//www\.\w+(.com|.edu|.net)/?'
m = re.match(patt,data)
print(m.group())

#1-6.匹配简单的以“www.”开头,以“.com”作结尾的Web域名,例如:www.yahoo.com.

import  re
data = 'www://www.yahoo.com/'
patt = r'(?i)(www:|http:|https:)//www\.\w+(.com|.edu|.net)/?'
m = re.match(patt,data)
print(m.group())

#1-7.匹配全体Python整数的字符串表示形式的集合

import  re
data = '231312 asad 234234 212.32'
patt = '\d+'
m = re.findall(patt,data)
print(m)

#1-8.Python3已经把int和long合并了,没有123L这种表示法了

import  re
data = '231312 asad 234234 212.32'
patt = '\d+'
m = re.findall(patt,data)
print(m)

#1-9.匹配全体Python浮点数的字符串表示形式的集合

import  re
data = '23123.44 0.2131'
patt = '\d+\.\d+'
m = re.findall(patt,data)
print(m)

#1-10匹配所有能够表示 Python 复数的字符串集。使用match()方法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值