import re
regex = re.compile(r"^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[\w!@#$%]{6,}$", flags=re.MULTILINE)
test_str = ("INVALID:\n"
"abcdefg\n"
"abc\n"
"abcdefghji\n"
"abCDEFghij\n"
"1234efghij\n"
"abcde6789\n"
"ab!67fghij\n"
"ab)=\n\n"
"VALID:\n"
"8vB0k3XiLp\n"
"VvsfM5he#X\n"
"d10STfJ$gA\n"
"R1cIX7mn8T\n"
"6EDNTbda%z\n"
"IKkED0#zYS\n"
"1S#9duFcHe\n"
"KP1fN3jTwJ\n"
"iRS1YB@nfI\n"
"Vp1yRxwuGD\n"
"fajT2ukURg\n"
"9tY8#HkojR\n"
"@LHTbA3C7J\n"
"%HLK6EqANV\n"
"#vZR6in5KJ\n"
"!WwjH3K65v\n"
"%5WOIrCv@R\n"
"emfpLRE5oD\n"
"zREw13rcJn\n"
"#NU42oxYa0\n"
"$oujwK%xR7\n"
"1YH#uOFQlV\n"
"L936DS2ynR\n"
"ab4RAVCZHv\n"
"9xwiZmDSAd\n"
"eZjPHg3B8i\n"
"OANw!p8yxH\n"
"J6efM@hxNz\n"
"qvmefZI3Wn\n"
"fH9wXGK8ZI\n"
"eHcl3qRYGS\n"
"i8we0zpOvr\n"
"1kpSFgeIKA\n"
"p8eM@FtZ9n\n"
"rj95zq!E3I\n"
"lkDKt@486w\n"
"7!j50lyxgB\n"
"%vBCxLq6Ym\n"
"@ky$u9iSGm\n"
"%QD9jA6Lm@\n"
"JolTzf7gUr\n"
"cSRe%v46Or\n"
"oJVlc#Gdn3\n"
"G!%NF0XESp\n"
"76dMFmbf%X\n"
"3JQlSRiXLj\n"
"Y$!%WCgti0\n"
"D1k$#ThiqG\n"
"M6tPY$XzQp\n"
"@gUcrWm7zA\n"
"1xc#hwGj0D\n"
"s8p#S$ZkWP\n"
"sIP3dQL#4j\n"
"bBLEnvlFI3\n"
"isSeP4AC%w\n"
"1OsdI4iCjR\n"
"@p#qm$NA9Z\n"
"guPjtIp5!i\n"
"a84ONQRZXY\n"
"homJ9T6w80\n"
"$!uh09kaUO\n"
"CTIX7vsalJ\n"
"2CASR7IUyY\n"
"Tr1jl!oKPF\n"
"2%ar6kMCZe\n"
"m4TrLJC!cD\n"
"3E#mZ!jrdn\n"
"oZIa$xmDU8\n"
"9wXxBaJAyz\n"
"0%dNQfyr$e\n"
"ez#IcxH8SX\n"
"MF$m6wile%\n"
"ilo3FURh9t\n"
"d71hgGe5Vo\n"
"KEr9u7CRtP\n"
"CfUE4Fj$Ju\n"
"aXSG5wIQor\n"
"VTk2fmDlbx\n"
"GHxBwpt0dN\n"
"mYS2Q1zFi!\n"
"qD0KiayFz4\n"
"hT9FrGQ$dS\n"
"5eKrEvnBZA\n"
"gA$fXPUd2#\n"
"Eoz8uqBART\n"
"7wKEo6jJGX\n"
"1p4Zj7Ssk2\n"
"K#MX8Q61dr\n"
"L%S2Kh7Q@r\n"
"fwD6zy$NM@\n"
"zyJPri5u7N\n"
"MyAI!j2iz%\n"
"9blWdD5!w@\n"
"iw6Ef3dBLk\n"
"JMYD1iHol2\n"
"#M1OUJ0VDi\n"
"e@78BCHLI%\n"
"oeD1F!4ifz\n"
"pCblno9zyJ\n"
"FJKErsBTp6")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html