检查字符串在python中是否包含特殊字符

检查字符串在python中是否包含特殊字符,python,regex,python-2.7,Python,Regex,Python 2.7,我想检查密码是否包含特殊字符。我在谷歌上搜索了几个例子,但没有找到解决我问题的方法。我该怎么做?以下是我到目前为止是如何尝试的 elif not re.match("^[~!@#$%^&*()_+{}":;']+$",password) print "Invalid entry." continue 我的字符串是password。不需要正则表达式。尝试: elif set('[~!@#$%^&*()_+{}":;\']+$').intersect

我想检查密码是否包含特殊字符。我在谷歌上搜索了几个例子,但没有找到解决我问题的方法。我该怎么做?以下是我到目前为止是如何尝试的

elif not re.match("^[~!@#$%^&*()_+{}":;']+$",password)
        print "Invalid entry."
        continue

我的字符串是password。

不需要正则表达式。尝试:

elif set('[~!@#$%^&*()_+{}":;\']+$').intersection(password):
    print "Invalid entry."

引号已在字符串中转义。这样做的目的是创建一个包含所有无效字符的集合,然后将其与
密码
相交(换句话说,一个集合包含集合和密码字符串中存在的所有唯一字符)。如果没有匹配项,结果集将为空,因此计算结果为
False
,否则将计算结果为
True
,并打印消息。

特殊字符串中的几个符号在正则表达式中具有特殊意义,必须转义。你得到了语法错误,因为在包含双引号的字符串的中间包含了<代码> ,所以Python完成了对字符串的处理,然后在随后看到的垃圾上阻塞。
elif not re.match(r"[~\!@#\$%\^&\*\(\)_\+{}\":;'\[\]]", password):
    print "Invalid entry"
    continue
我使用了一个原始字符串文字,您应该始终在正则表达式中使用它。我对需要转义的字符进行了转义,并稍微简化了您的表达式,因为字符串标记的开头
^
和结尾
$
是不必要的-一旦进行了1次匹配,它将返回True,并将跳过以下代码


当有疑问时,转义:)

并且您不会从中得到语法错误?您不想要
elif
而不是
elif not
?看起来您正在打印“无效条目”“如果密码与正则表达式不匹配。@celeritas yes,这就是您想要的结果。”。如果匹配有效,则密码至少包含1个特殊字符,因此为“良好”。如果正则表达式匹配
密码
,则其值将为
。要运行缩进代码,需要对其求反。想想看……是的,我在想OP想要确保密码不包含特殊字符。你不需要所有的反斜杠。大多数特殊角色都会在方括号内失去他们的特殊能力。@Bryan是真的,但正如我所说的,如果有疑问,就逃跑!我仍然对正则表达式感到满意,而且还没有完全记住所有的规则。