vérifiez si la chaîne contient des caractères spéciaux dans python
Je veux vérifier si un mot de passe contient des caractères spéciaux. J'ai googlé pour quelques exemples, mais je ne trouve pas que les adresses de mon problème. Comment dois-je faire? Voici comment je suis en train jusqu'à présent;
elif not re.match("^[~!@#$%^&*()_+{}":;']+$",password)
print "Invalid entry."
continue
Ma chaîne est le mot de passe.
et vous n'obtenez pas une erreur de syntaxe?
Je suis à l'obtention d'une
Je suis à l'obtention d'une
OriginalL'auteur mungaih pk | 2014-09-30
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de regex pour cela. Essayez:
Le guillemet a été échappé dans la chaîne. Ce que ce n'est de créer un ensemble contenant tous les caractères non valides, puis prendre l'intersection de celui-ci et
password
(en d'autres termes, un ensemble contenant tous les caractères uniques qui existent dans l'ensemble et la chaîne de mot de passe). Si il n'y a pas de matchs, l'ensemble résultant sera vide, et par conséquent, d'évaluer commeFalse
, sinon il va évaluer commeTrue
et imprimer le message.OriginalL'auteur Silas Ray
Plusieurs des symboles dans votre spécial chaînes de caractères ont une signification spéciale dans les regexes, et doit être protégé. Vous obtenez l'erreur de syntaxe parce que vous avez inclus
"
au milieu d'une chaîne de caractères délimitée par des guillemets, donc Python terminé le traitement de la chaîne de là, puis s'étouffe sur les ordures qu'il voit par la suite. Essayez ceci:J'ai utilisé un raw littéral de chaîne, vous devez toujours utiliser dans les regexes. J'ai échappé à la caractères qui doivent être échappé, et simplifiée de votre expression un peu, comme le début
^
et à la fin$
de la chaîne de marqueurs ne sont pas nécessaires - dès le 1er match, il sera de retour Vrai, et d'ignorer le code suivant.En cas de doute, d'évasion 🙂
elif
plutôt queelif not
? Vous avez l'impression "d'entrée non Valide" si le mot de passe ne correspond PAS à l'expression régulière.oui, c'est ce que vous voulez arriver. Si le match de travaux, le mot de passe contient au moins 1 caractère spécial, et il est donc "bon". Si l'expression régulière correspond à
password
, c'est la valeur seraTrue
. Vous avez besoin de nier que pour exécuter le code indenté. Pensez-y...Ouais, je pensais que l'OP voulait assurez-vous que le mot de passe ne contient PAS de caractère spécial(s).
Vous n'avez pas besoin de toutes ces barres obliques inverses. La plupart des caractères spéciaux perdre leurs pouvoirs spéciaux à l'intérieur des crochets.
vrai, mais comme je l'ai dit, en cas de doute, de s'échapper! Je suis toujours d'être à l'aise avec les regexes, et de ne pas tout avoir toutes les règles mémorisé encore.
OriginalL'auteur MattDMo