第一题是不是匹配规则有问题?我圈出来的地方是不是少了个\
来源:6-10 【总结】Python常见正则匹配案例
默默无名的小人物
2021-04-22 11:56:04

我验证了一下第一题,发现只能匹配1-9和100,两位数就不行,如下图

增加了\后可以匹配1-100内的任意数字

这一章里面第一题,第二题,第三题都有这个问题,请老师给仔细看看给修改一下吧
还有第五题,执行完成为什么是空呢,这个也请老师给讲一下吧

1回答
同学,你好!
1、是缺少了\,已经对有问题的部分进行了修改
2、第五题,W前边是有\的

全部正确代码如下:
# 1、匹配1 - 100之间的数
import re
s = '100' # 1-100内的任意数字
ret = re.match(r'(100|[1-9]\d{0,1})$', s)
print(ret.group())
# 2、匹配座机号码:010 - 12345678,其构造规则为[3位数字][-][8位数字]或者0431 - 1234567,
# 其构造规则为[4位数字][-][7位数字]
import re
s = "010-12345678"
ret = re.search(r'^\d{3,4}-\d{7,8}$', s)
print(ret.group())
# 3、匹配5 - 10位纯数字组成的qq,且不能以0开头
import re
s = "11010"
ret = re.match(r'[1-9]\d{4,9}$', s)
if ret != None:
print(ret.group())
else:
print('匹配失败!')
# 4、取出字符串中的所有字母
import re
s = "43arwer32656fafa6546jjuy#H"
res = re.compile(r'[a-zA-Z]+')
ret = res.findall(s)
print(ret)
# 5、找出以字母e结尾的单词,忽略大小写
import re
s = 'study hard and make progress every day'
res = re.compile(r'\w+y\b', re.I) # \b为边界
ret = res.findall(s)
print(ret)
# 6、将多个重复的字母替换成 &
import re
s = "PythondddJavauuuHTMLFFPHP"
res = re.compile(r'([a-zA-Z])\1+')
ret = res.sub('&', s)
print(ret)
# 7、将字符串变成'我要学Python编程'
import re
s = "我我...我我...我要..要要...要要...学学学...学学..Python...编编编..编程..程.程...程...程"
res = re.sub(r'\W+', '', s)
ret = re.sub(r'(.)\1+', r'\1', res)
print(ret)
祝学习愉快!
相似问题