2012-04-21 68 views
4

我試圖使用python re來查找一組重複特定次數的相同字母或數字。 (.)適用於識別將要重複的內容,但我無法找到如何避免重複不同的字符。這裏是我有:使用正則表達式匹配相同字符的確切次數

re.search(r'(.){n}', str) 

因此,例如,它會從99997如果n = 4匹配9999,但如果n = 3
感謝

+0

這個網站是你的朋友:http://www.txt2re.com/index-php.php3。 – 2012-04-21 04:57:59

+2

你能澄清你想*匹配什麼,你*不想匹配什麼?我不明白「我不知道如何防止它重複不同的人物」是應該的。 – 2012-04-21 05:00:46

+0

我想匹配任何重複n次的東西,所以如果9次重複n次我想要9999,或者如果T重複n次我想TTTT,但是我不想'9897如果我說。{4} – cah 2012-04-21 05:03:48

回答

4

如何

(?:^|(?<=(.)))(?!\1)(.)\2{n-1}(?!\2) 

這將:

  • (?:^|(?<=(.))):確保:
    • ^:無論我們是在字符串的開頭
    • (?<=(.)) :要麼我們不在字符串的開頭;然後,捕捉人物在比賽之前,並保存到\1
  • (?!\1)(.):比賽是不是\1任何字符,並保存到\2
  • \2{n-1}:比賽\2 N-1次
  • (?!\2):請當然\2不能匹配期待

n-1是隻有符號;顯然你想用這個替換n-1的實際值,而不是8-1或某物)。

重要編輯:正則表達式((.)\1{n-1}(?!\1))不起作用,因爲它沒有考慮到的字符匹配\1比賽背後的早期版本。上面的正則表達式解決了這個問題。

+0

謝謝,看起來像它的工作,我會檢查你,因爲你是第一次,但它讓我等待4分鐘由於某種原因或其他 – cah 2012-04-21 05:07:12

+1

請重新閱讀答案;我的答案的以前版本不起作用。上面應該現在工作。 – 2012-04-21 05:18:40

+2

感謝頑強的持久! – cah 2012-04-21 05:32:19