2012-08-04 156 views
1

我知道這可能是非常基本的,但我試圖創建一個正則表達式,它只會匹配一組字符的某個倍數。例如,re.findall(表達式'aaaa')將返回'aaaa',但re.findall(表達式'aaa')將返回'aa',其中表達式是涉及對aa的一些正則表達式。如果整個字符串是'aa'的整數倍,它將只返回整個字符串。有任何想法嗎?python正則表達式匹配一個表達式的倍數

+0

對於您可能在[此處](http://extract-web-data.com/regex-expressions/#Groups)閱讀的非捕獲組。 – 2012-08-05 17:35:09

回答

1

只需使用(aa)+。 (對於findall,你會想要使用非捕獲組,所以(?:aa)+。)

>>> re.findall('(?:aa)+', 'aa') 
['aa'] 
>>> re.findall('(?:aa)+', 'aaaa') 
['aaaa'] 
>>> re.findall('(?:aa)+', 'aaaaa') 
['aaaa'] 
+0

謝謝我認爲這就是我正在尋找的。我不知道捕捉和不捕捉的組。 – rottentomato56 2012-08-04 21:46:14

0

嘗試類似例如(?:(?:expression){3})+查找三個表達式的所有倍數。如果表達更短,您也可以按照自己的意願經常寫。

如果您想匹配確切的重複,請嘗試如(?:(expression)\1{2})+爲三的倍數。請注意,如果表達式不重要,則可能需要回溯,因此可能會很慢。