【发布时间】:2026-02-21 11:10:01
【问题描述】:
我一直在尝试设置一个正则表达式参数,该参数查看 SQL 文件中的密码字符串并将记录的 ID 移动到列表中。当设为 True 时,所有条目都会添加到列表中,但一个不正确的密码仍会添加到列表中,即使它不应该传递正则表达式参数。
def passwordCheck(filename):
idList = []
con = sqlite3.connect(filename)
cur = con.cursor()
for row in cur.execute("SELECT * FROM data;"):
row[5] = str(row[5])
regScan = re.match(r"(r'^(?=.*[0-9])(?=.*\W).*$')", row[5])
for match in row[5]:
idList.append(row[0])
return idList
def validPass(filename):
idList = []
con = sqlite3.connect(filename)
cur = con.cursor()
for row in cur.execute("SELECT * FROM data;"):
string = pd.Series(row[5])
string[string.str.match(r"(r'^(?=.*[0-9])(?=.*\W).*$')")==True]
if True:
idList.append(row[0])
return idList
这里我有两种方法,一种是单独使用正则表达式和 SQL 文件,另一种是尝试使用 pandas 来达到同样的目的。
我的数据库中的一个密码只是“密码”,而其他密码有 1 个小写字母、大写数字和特殊字符。我的目标是标记不正确的密码,并将其相应的用户 ID 放在列表中。所以我的输出应该是这样的:
[7]
然而,当我将参数设置为 False 时,它总是空白,或者当我设置为 True 时,所有条目都被添加,尽管 ID: 7 是唯一应该标记的不正确条目。
任何帮助将不胜感激。
【问题讨论】:
-
这一行:
if True:表示您的代码将始终执行此if语句中的内容。相反,您想检查正则表达式的结果是否为 True。 -
我明白你的意思,那么我应该用什么来检查结果是真还是假?
-
试试这个:
if not string.str.match('^(?=.*[0-9]$)(?=.*[a-zA-Z])'):。我调整了正则表达式,因为您的正则表达式没有按我预期的方式工作,但如果它适合您,请随时继续使用您的。
标签: python sql regex passwords