2015-10-07 17 views
-2

我正在尋找一個正則表達式,以將字符串中任何字符的多次出現限制爲兩次。正則表達式將任何字符的多次出現限制爲兩個

例如:Reallllly likeSooooooo good應該轉換爲Really likeSo good

+1

但它實際上會結束'soo good' – Manu

+1

將'Sooooooo good'轉換爲'so good'很容易,但是像'真正'轉換爲'真的很喜歡'很難。 –

+1

@KevinGuan:其實我想其實反之亦然。 :)除非你的規則是3+ - > 1,2 - > 2(這很奇怪,可能,但很奇怪。) – Amadan

回答

0

我不知道如何使用正則表達式做,但itertools.groupby效果很好:

>>> from itertools import groupby 
>>> g = groupby('reallllly goood') 
>>> ''.join(''.join(list(x)[:2]) for _,x in g) 
>>> 'really good' 
3

只有兩個替換的三個或三個以上相同的字符序列。

re.sub(r'(.)\1{2,}', r'\1\1', "Realllllly goooood") 

編輯:固定錯字。

+0

幾乎正確,更正 - http://stackoverflow.com/a/32987851/1975086 –

0

從@pacholik回答幾乎是正確的。

正確表達:

re.sub(r'(.)\1{2,}', r'\1\1', "Realllllly goood") 

我們取代,其中更然後出現3次,而不是4(第一(.)和2首或更多個重複\1{2,}用2次重複的第一字符\1\1的替換)的子串。

相關問題