2013-04-17 5 views
4
found = re.findall("g+", "fggfggggfggfg", re.DOTALL) 

Я бы хотел найти самое длинное совпадение для шаблона с помощью findall. Я нашел некоторые решения, но только для re.match или re.finditer. Может ли кто-нибудь дать мне совет, пожалуйста?Python - поиск максимальной продолжительности с помощью findall

ответ

7

re.DOTALL ничего не делает в этом случае, так что я просто взял его для простоты:

>>> import re 
>>> max(re.findall("g+", "fggfggggfggfg"), key=len) 
'gggg' 

Если вам нужно их все в порядке длины:

>>> sorted(re.findall("g+", "fggfggggfggfg"), key=len, reverse=True) 
['gggg', 'gg', 'gg', 'g'] 
+0

+1 и Я также хотел бы отметить, что флаг 're.DOTALL' не делает ничего полезного. –

+0

@AlanMoore Мне было интересно, стоит ли мне упоминать об этом или нет ... – jamylak

+0

Я использую его в своей программе, но да, прямо здесь бесполезно :) –

Смежные вопросы