匹配python中的正则表达式

时间:2014-01-25 12:47:32

标签: python regex python-2.7

我有一个字符串,只能由字母数字字符组成。因此,对于验证,我有以下代码,但在某些情况下它不起作用。

p = re.compile(r'\w+')
bool(p.match("str"))

但是在某些情况下失败,例如str = "we1}"结果为真但在str = ")we1"返回false时它应该为false,这是正确的。因此,如果我希望我的字符串只包含字母数字字符,我该怎样才能正确处理所有这些情况。

2 个答案:

答案 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匹配字符串的开头。

请参阅search() vs match()