提取 6 个字母,其中至少包含一个小写字母、至少一个大写字母和至少一个数字?

ami*_*toz 1 python regex

考虑字符串:

text = "aaAA23 aAAA32 32AeeeB  fjdSkjj839jl2lkjj"
pat = ?
result = re.findall(pat, text)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种模式,它将给出以下结果:

["aaAA23", "aAAA32", "32Aeee", "dSkjj8"]
Run Code Online (Sandbox Code Playgroud)

我以一种天真的方式这样做:

pat = "[a-z]+[A-Z]+[0-9]+|[A-Z]+[a-z]+[0-9]+|[a-z]+[0-9]+[A-Z]+|[A-Z]+[0-9]+[a-z]+|[0-9]+[a-z]+[A-Z]+|[0-9]+[A-Z]+[a-z]+"
Run Code Online (Sandbox Code Playgroud)

这是行不通的,因为它会产生:

["aaAA23", "aAAA32", "32Aeee", "Skjj839"]
Run Code Online (Sandbox Code Playgroud)

怎么做?

Bar*_*mar 7

使用与每个所需字符类型匹配的前瞻。

pat = r'(?=.{0,5}[a-z])(?=.{0,5}[A-Z])(?=.{0,5}\d)[a-zA-Z\d]{6}'
Run Code Online (Sandbox Code Playgroud)

演示版