Possiamo usare il modello '\d.*[A-Z]|[A-Z].*\d'
per cercare le voci che hanno almeno una lettera maiuscola e un numero. Logicamente parlando ci sono solo due modi in cui una lettera maiuscola e un numero possono apparire in una stringa. O viene prima la lettera e il numero dopo o il numero prima e la lettera dopo.
Il tubo | indica "OR", quindi esamineremo ciascun lato separatamente. \d.*[A-Z]
corrisponde a un numero seguito da una lettera maiuscola, [A-Z].*\d
corrisponde a qualsiasi lettera maiuscola seguita da un numero.
words = ['Password1', 'password2', 'passwordthree', 'P4', 'mypassworD1!!!', '898*(*^$^@%&#abcdef']
for x in words:
print re.search('\d.*[A-Z]|[A-Z].*\d', x)
#<_sre.SRE_Match object at 0x00000000088146B0>
#None
#None
#<_sre.SRE_Match object at 0x00000000088146B0>
#<_sre.SRE_Match object at 0x00000000088146B0>
#None
fonte
2015-11-07 22:36:34
''\ d. * [A-Z] | [A-Z]. * \ D' –
@PierreLafortune Ti dispiacerebbe spiegare la tua espressione regolare? Funziona penso ... –
@PierreLafortune In realtà, non funziona. –