检查字符串是否包含python中的特殊字符
问题描述:
我想检查密码是否包含特殊字符。我搜索了几个例子,但无法找到解决我的问题。我该怎么做?这是我迄今为止的尝试方式;检查字符串是否包含python中的特殊字符
elif not re.match("^[[email protected]#$%^&*()_+{}":;']+$",password)
print "Invalid entry."
continue
我的字符串是密码。
答
你不需要这个正则表达式。请尝试:
elif set('[[email protected]#$%^&*()_+{}":;\']+$').intersection(password):
print "Invalid entry."
引号已在字符串中转义。它的作用是创建一个包含所有无效字符的集合,然后将其与password
(换句话说,包含集合和密码字符串中存在的所有唯一字符的集合)相交。如果没有匹配,则结果集将为空,因此评估为False
,否则将评估为True
并打印该消息。
答
特殊字符字符串中的几个符号在正则表达式中有特殊含义,必须转义。你会得到语法错误,因为你在包含"
的字符串的中间用双引号描述,所以Python完成处理字符串,然后扼杀它后来看到的垃圾。试试这个:
elif not re.match(r"[~\[email protected]#\$%\^&\*\(\)_\+{}\":;'\[\]]", password):
print "Invalid entry"
continue
我用了一个原始字符串,你应该总是在正则表达式中使用。我逃过了需要转义的字符,并且简化了一下表达式,因为字符串标记的起始^
和结尾$
不是必需的 - 只要匹配成功,它就会返回True,并且会跳过以下内容码。
当有疑问时,逃生:)
而你没有得到一个语法错误? – MattDMo 2014-09-30 21:45:19
我得到一个 – 2014-09-30 21:45:36