《python编程快速上手 让繁琐工作自动化》第七章习题+实践答案

1 习题

1.re.compile() 函数返回Regex 对象。
2.使用原始字符串是为了让反斜杠不必转义。
3.search() 方法返回Match 对象。
4.group() 方法返回匹配文本的字符串。
5.分组0 是整个匹配,分组1 包含第一组括号,分组2 包含第二组括号
6.句号和括号可以用反斜杠转义:.、\(和\)。
7.如果正则表达式没有分组,就返回字符串的列表。如果正则表达式有分组,就返回字符串的元组的列表。
8.| 字符表示匹配两个组中的“任何一个”。
9.? 字符可以表示“匹配前面分组0 次或1 次”,或用于表示非贪心配。
10.+匹配1 次或多次。匹配0 次或多次。
11.{3}匹配前面分组的精确3 次实例。{3, 5} 匹配3 至5 次实例。
12.缩写字符分类\d、\w 和\s 分别匹配一个数字、单词或空白字符。
13.缩写字符分类\D、\W 和\S 分别匹配一个字符,它不是数字、单词或空白字符。
14.将re.I 或re.IGNORECASE 作为第二个参数传入re.compile(),让匹配不区分大小写。
15.字符.通常匹配任何字符,换行符除外。如果将re.DOTALL 作为第二个参数传入re.compile(),那么点也会匹配换行符。
16..执行贪心匹配,.?执行非贪心匹配。
17.[a-z0-9]或[0-9a-z]
18.‘X drummers, X pipers, five rings, X hens’
19.re.VERBOSE 参数忽略正则表达式字符串中的空白符和注释
20.re.compile(r’^\d{1,3}(,{3})
$’)
21.re.compile(r’[A-Z][a-z]*\sNakamoto’)
22.re.compile(r’([^Alice|Bob|Carol])\s([eat|pets|throws])\s[apples|cats|baseballs].’,re.IGNORECASE)

2 项目实践

1.强口令检测
写一个函数,它使用正则表达式,确保传入的口令字符串是强口令。强口令的定义是:长度不少于8 个字符,同时包含大写和小写字符,至少有一位数字。你可能需要用多个正则表达式来测试该字符串,以保证它的强度。
答:

import re

len_re=re.compile(r'.{8,}')
num_re=re.compile(r'\d')
str_re=re.compile(r'[a-z].*[A-Z]|[A-Z].*[a-z]')

def password_test(password):
    if len_re.search(password) and num_re.search(password) and str_re.search(password):
        print(password)
        print('your password is strong enough!')
    else:
        print('please reset your password')
        
password='sbdf2csdc'
password_test(password)

2.写一个函数,它接受一个字符串,做的事情和strip()字符串方法一样。如果只传入了要去除的字符串,没有其他参数,那么就从该字符串首尾去除空白字符。否则,函数第二个参数指定的字符将从该字符串中去除。
答:

import re

def re_strip(aim_str,delete_str=None):
    if delete_str==None:
        regex=re.compile(r'^\s+.*\s$', re.DOTALL)
    else:
        regex=re.compile(r''+delete_str+'', re.I)       
    aim_str=regex.sub("",aim_str)    
    print("删除后的字符串:"+aim_str)
    
str1=input("请输入字符串:\n")
str2=input("需要删除的字符是:\n")
re_strip(str1, delete_str=str2)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值