문자열이 문자,숫자,특수문자가 모두 포함되는지 여부를 확인하기 위한 정규식입니다.

import re

regex = re.compile(r'(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[^\w\s]).*')

text1 = "afsdfafa2#@!#!#888";
text2 = "asdfasf1232";
text3 = "@!!@#fqwfe";

print('{0} {1} Match'.format(text1, 
  "is" if regex.match(text1) else "is not"))
print('{0} {1} Match'.format(text2, 
  "is" if regex.match(text2) else "is not"))
print('{0} {1} Match'.format(text3, 
  "is" if regex.match(text3) else "is not"))

(?=.*[문자]) 정규식 패턴은 해당 문자가 필수로 포함되어야하는 경우에 사용하는 정규식입니다.

(?=.*[문자]) (?=.*[문자]) (?=.*[문자])

이렇게 여러번 쓰면 괄호안에 문자가 하나라도 포함되지 않으면 match 되지 않습니다. ( 교집합을 생각하시면 됩니다. )

결국 문자와 숫자 특수문자 모두 포함되어야 최종적으로 매치가되게 되는거죠.

감사합니다. 😄