我有一个字符串,只能由字母数字字符组成。因此,对于验证,我有以下代码,但在某些情况下它不起作用。
p = re.compile(r'\w+')
bool(p.match("str"))
但是在某些情况下失败,例如str = "we1}"
结果为真但在str = ")we1"
返回false时它应该为false,这是正确的。因此,如果我希望我的字符串只包含字母数字字符,我该怎样才能正确处理所有这些情况。
答案 0 :(得分:1)
确保也使用行开始/结束锚点(^ and $
):
p = re.compile(r'^\w+$')
如果没有^ and $
,你的正则表达式只匹配we1
,那么你将错误地返回成功。
注意:\w
将匹配[A-Za-z0-9_]
(字母数字或下划线)
答案 1 :(得分:1)
使用^
(匹配字符串的开头)和$
(匹配字符串的结尾):
>>> p = re.compile(r'^\w+$')
>>> bool(p.match('str'))
True
>>> bool(p.match('str}'))
False
^
是可选的,因为re.match
匹配字符串的开头。