gpt4 book ai didi

python - 所有这些 IF 和 None 都是处理 RE 的最佳方法吗?

转载 作者:太空宇宙 更新时间:2023-11-03 15:07:15 25 4
gpt4 key购买 nike

我一直在尝试制作自己的非常简单的程序,以基于正则表达式检查用户复制的文本字符串是否可以被视为强密码。在程序中,我希望一个强密码被认为至少有 8 个字符,至少一个小写字符和一个大写字符,以及至少一个数字。

我编写的代码如下所示:

import re, pyperclip

# regex for password
regexEight = re.compile(r"\w{8,100}") # regex for 8 char.
regexLower = re.compile(r'[a-z]') # regex for lower.
regexUpper = re.compile(r"[A-Z]") # regex for upper.
regexNum = re.compile(r"\d") # regex for number.

# get text from paste
text = str(pyperclip.paste())

# see if text matches every regex.
mo = regexEight.search(text)
if mo != None:
exit
else:
print("Password to short.")

mo2 = regexLower.search(text)
if mo2 != None:
exit
else:
print("Password need to contain at least one lower case character.")

mo3 = regexUpper.search(text)
if mo3 != None:
exit
else:
print("Password need to contain at least on upper case character.")

mo4 = regexNum.search(text)
if mo4 != None:
exit
else:
print("Password need to contain at least one digit.")

# return this if every regex matches.
if mo or mo2 or mo3 or mo4 != None:
print("You have a strong password.")

我是 RE 的初学者,所以我使用 None 来查看对象是否匹配(如果匹配,则返回特定密码,如果不匹配 mo(1,2,3) = None) 。不过,我觉得这种方式很不寻常,或者至少我不认为RE应该这样处理,所以这就是我在这里问的原因。

有什么办法可以让这段代码变得更简单吗?或者这种方式对于程序来说完全可以吗?在我看来,如果没有所有的 if 和 None,代码会更好。有办法摆脱它们吗?

最佳答案

我认为一个不错的通用方法是创建一些结构来保存您想要检查的正则表达式和相应的错误消息。

import re

tests = [
(re.compile(r"\w{8,100}"), "Too short."),
(re.compile(r"[a-z]"), "Add lowercase letter."),
(re.compile(r"[A-Z]"), "Add uppercase letter."),
(re.compile(r"\d"), "Add number.")
]

check = True
for regex, message in tests:
if regex.search("example_password") is None:
print(message)
check = False

if check:
print("Strong password.")

关于python - 所有这些 IF 和 None 都是处理 RE 的最佳方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44548842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com