4

是否有pythonian或速记方法可以从字符串及其索引中获取所有模式出现?我可以写一个方法来做到这一点,我只是想知道是否有一个超短的单线或什么的:)

4

1 回答 1

16

pythonre模块来救援。

>>> import re
>>> [x.start() for x in re.finditer('foo', 'foo foo foo foo')]
[0, 4, 8, 12]

re.finditer返回一个generator,这意味着您可以在 a中使用而不是使用列表理解for-loop,这将更节省内存。

您可以扩展它以获得给定文本中模式的跨度。即开始和结束索引。

>>> [x.span() for x in re.finditer('foo', 'foo foo foo foo')]
[(0, 3), (4, 7), (8, 11), (12, 15)]

Python 不是很棒吗 :) 无法阻止自己引用XKCD、否决票或不反对票...

在此处输入图像描述

于 2013-03-24T14:37:50.957 回答