python正则筛选

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

以下采用正则表达式实现,请验证采纳,谢谢!
说明:
^匹配开头
(?![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-9]\d*$
大写字符:/^[A-Z]+$/
小写自负:/^[a-z]+$/
特殊字符需要你自己定义哪些属于特殊字符