2014-01-25 84 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