【发布时间】:2013-04-09 21:36:43
【问题描述】:
found = re.findall("g+", "fggfggggfggfg", re.DOTALL)
我想使用 findall 查找模式的最长匹配项。我找到了一些解决方案,但仅适用于 re.match 或 re.finditer。有人可以给我建议吗?
【问题讨论】:
found = re.findall("g+", "fggfggggfggfg", re.DOTALL)
我想使用 findall 查找模式的最长匹配项。我找到了一些解决方案,但仅适用于 re.match 或 re.finditer。有人可以给我建议吗?
【问题讨论】:
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']
【讨论】:
re.DOTALL 标志没有做任何有用的事情。