2013-03-04 58 views
1

我試圖找到在用戶輸入的字符串中重複出現超過2次的任何字符。我有這個,但它沒有進入if語句。在字符串中查找3個或更多重複的字符

password = asDFwe23df333 

s = re.compile('((\w)\2{2,})') 

m = s.search(password) 

if m: 
    print ("Password cannot contain 3 or more of the same characters in a row\n") 

    sys.exit(0) 

回答

3

您需要以字母「R」前綴您正則表達式,像這樣:

s = re.compile(r'((\w)\2{2,})') 

如果你不這樣做,那麼你就必須對所有反斜線因爲Python通常翻倍像正常字符串中的轉義字符一樣處理反斜槓。由於這使得正則表達式更難以閱讀,通常情況下,Python中的大多數正則表達式都包含該前綴。

此外,在您包含的代碼中,您的密碼不在引號內,但我假設它在您的代碼中有引號。

+0

就是這樣,謝謝! – 2013-03-04 01:48:37

-1

不能您只需經過整個字符串,每次你發現一個字符等於以前,你增加一個計數器,直到它達到了3的值?如果角色是從以前的不同,它只會設置計數器回的事情0

編輯: 或者,你可以使用:

S =「AAABBB」 re.findall( r'((\ w)\ 2 {2,})',s)

並檢查第二行返回的列表是否有任何元素。

相關問題