Rosonlau 2022-03-05 16:30 采纳率: 100%
浏览 68
已结题

python正则筛选

如何在一个txt文本中筛选需要的信息(readlines()操作配合for in可以吗)
例如文本中信息:
12345678
1234!@#¥
EWQDzx1234
qwdqQQ23!!
如何筛选出出现两个两个特殊字符+大写字符+小写字符+数字,且不少于8个(大于等于8)
主要是正则表达式不太明白,!!感谢

  • 写回答

2条回答 默认 最新

  • 一毛钱的年代 2022-03-05 17:31
    关注
    以下采用正则表达式实现,请验证采纳,谢谢!
    说明:
    ^匹配开头
    (?![A-Za-z0-9]+$)匹配后面不全是(大写字母或小写字母或数字)的位置,排除了(大写字母、小写字母、数字)的123种组合
    (?![a-z0-9\\W]+$)匹配后面不全是(小写字母或数字或非字母数字)的位置,排除了(小写字母、数字、特殊符号)的123种组合
    (?![A-Za-z\\W]+$)匹配后面不全是(大写字母或小写字母或非字母数字)的位置,排除了(大写字母、小写字母、特殊符号)的123种组合
    (?![A-Z0-9\\W]+$)匹配后面不全是(大写字母或数字或非字母数字),排除了(大写字母、数组、特殊符号)的123种组合
    ^.匹配除换行符以外的任意字符,因为排除了上面的组合,所以就只剩下了4种都包含的组合了
    {8,}8位以上
    $匹配字符串结尾
    

    import re

    #正则表达式校验密码是否符合规则

    def check_pwd(string):
    pattern = r'^(?![A-Za-z0-9]+$)(?![a-z0-9\W]+$)(?![A-Za-z\W]+$)(?![A-Z0-9\W]+$)^.{8,}$'
    res = re.search(pattern, string)
    print(res)
    if res:
    return "OK"
    else:
    return "NO"

    if name == 'main':
    a = 'ABCabc012!@#'
    print(check_pwd(a))

    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月5日
  • 已采纳回答 3月5日
  • 创建了问题 3月5日

悬赏问题

  • ¥15 制裁名单20240508芯片厂商
  • ¥20 易康econgnition精度验证
  • ¥15 线程问题判断多次进入
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接