前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python脚本练习(4):正则表达式实例

python脚本练习(4):正则表达式实例

作者头像
AsicWonder
发布2020-07-16 21:37:03
1.1K0
发布2020-07-16 21:37:03
举报
文章被收录于专栏:数字芯片实验室

实例2:强口令检测

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

思路:

1、程序需要编写一个Python函数,该函数实现字符串的测试

2、需要用正则表达式进行判定字符串是否符合条件1(长度不少于 8 个字符)、条件2(同时包含大写和小写字符)和条件3(至少有一位数字)

实现:本文提供3种写法:

1、

代码语言:javascript
复制
import re
def strongPassword(str): #定义正则表达式函数
  lengthRex1 =re.compile(r'[a-z]+') # 创建正则表达式对象1
  lengthRex2 =re.compile(r'[A-Z]+') # 创建正则表达式对象2
  lengthRex3 =re.compile(r'[0-9]+') # 创建正则表达式对象3
  if len(str) <=8:
    return 1
  if lengthRex1.search(str) == None:
    return  1
  if lengthRex2.search(str) == None:
    return  1
  if lengthRex3.search(str) == None:
    return  1
  else:
    print('口令强度足够!可以使用!')
    return 0
print("强口令要求:字符串长度不少于8个,同时包含大小写,且至少含有一位数字。")
flag = 1
while(flag):
  strongStr =input("请输入一个强口令:")
  flag =strongPassword(strongStr)

2、

代码语言:javascript
复制
import re
def strongPwd(Password):
    regexList =[r'[a-zA-Z0-9]{8,}', r'[a-z]+', r'[A-Z]+', r'[0-9]+']
    for i inregexList:
        pwdRegex =re.compile(i).search(Password)
        if pwdRegexis None:
           print("密码: %s 格式错误" % Password)
           return
    print("密码格式正确。")
Password = input("请输入密码:")
strongPwd(Password)

3、

代码语言:javascript
复制
import re
def passwordcheck(password):
   passwordRegex = re.compile(r'''(
       (?=^.{8,}$)                  #8位以上
       (?=.*\d)                     #至少一位数字
       (?=.*[A-Z])                  #至少一个大写字母
       (?=.*[a-z])                  #至少一个小写字母
       )''',re.VERBOSE)
   match = passwordRegex.match(password)
   return match is not None
print('请输入密码')
password=str(input())
print(passwordcheck(password))

实例3:strip()的正则表达式版本

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

思路:

1、根据strip()方法特性,去除头尾特定字符需要用到“ ^ ”和“ $ ”符号。

2、由于不能事先知道去除哪些字符,因此在正则表达式中需要用到format格式字符串。需要用 | “管道"符号在^{0}和{0}$之间插入,匹配多个分组。

3、sub()方法返回替换后的字符串,因此sub()方法的第一个参数为”"空。 4、*默认去除字符串首尾空白字符,我的方法是在input()输入参数二时,若input() == “”,则重新赋值参数二为" "空格-星号,星号匹配0次或多次分组,能够匹配到所有空格。

实现:

代码语言:javascript
复制
import re
def fakeStrip(longStr,str ):
    stripRex =re.compile(r'^{0}|{0}$'.format(str))
    return stripRex.sub('',longStr)
inputStr1 =input("请输入原字符串:")
inputStr2 =input("请输入要去除的字符:")
if inputStr2 =='': #若第二参数是否为空,更改为' *',方便正则表达式进行模式匹配
  inputStr2 = ' *'
print("去除后的字符串为:",fakeStrip(inputStr1,inputStr2))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字芯片实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档