2014-01-25 87 views
1

我有一个字符串,它应该只包含字母数字字符。因此,对于验证,我有以下代码,但它不适用于某些情况。在Python中匹配正则表达式

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

但这种失败在某些情况下,当str = "we1}"结果是真喜欢,但它应该是假的,而str = ")we1"返回false这是正确的。因此,如果我希望我的字符串只包含字母数字字符,那么如何正确处理所有这些情况。

回答

1

使用^(匹配字符串的开始)和$(匹配字符串的结尾):

>>> p = re.compile(r'^\w+$') 
>>> bool(p.match('str')) 
True 
>>> bool(p.match('str}')) 
False 

^是可选,因为re.match匹配字符串的开头。

请参阅search() vs match()

1

确保使用线开始/结束锚(^ and $)也:

p = re.compile(r'^\w+$') 

没有^ and $您正则表达式匹配只是we1和你将错就错的成功返回。

注:\w将匹配[A-Za-z0-9_](字母数字或下划线)

+1

感谢您的解决方案。 – prattom