2015-11-12 83 views
0

假設我們有一個像'w q a a a a a e d a a'這樣的字符串,我想找到長度至少爲2的最長序列'a',在上例中爲'a a a a a'。我試過以下內容:查找一個字符的最長連續序列

re.findall(r'(a a a*)', text) 

但它只給出了最短的匹配。然後,我嘗試了:

re.findall(r'([^a] a a a* [^a])', text) 

但上述示例字符串的結果爲空。我怎樣才能做到這一點?

+2

你的意思是像'(?:一){2} '(「*'a'後跟一個空格,至少兩次但是儘可能多次」*)?見例如https://regex101.com/r/rL3lY4/1 – jonrsharpe

+0

Oooh男士,謝謝。這就是我想要的:) – Alex

回答

0

這是因爲你有你的空間a字符之間的空間。您可以使用匹配的a任意組合和空間長度爲5或字符類的更多:

>>> re.findall(r'([a ]{5,})', text) 
[' a a a a a '] 

還要注意的是,你並不需要一個捕獲組整體的正則表達式的周圍,在這種情況下,你可以使用無捕獲組a和空間(拒絕短圖案匹配),因爲你只想要一個比賽,你可以使用re.search()

>>> M = re.search(r'(?:a){2,}', text) 
>>> 
>>> M.group(0) 
'a a a a a ' 
相關問題