如何在Python中查找所有出现的模式及其索引

时间:2013-03-24 14:33:31

标签: python regex string shortcut

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

1 个答案:

答案 0 :(得分:14)

python re模块救援。

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

re.finditer会返回generator,这意味着您可以在for-loop中使用list-comprehensions,而不是使用XKCD,这样可以提高内存效率。

您可以对此进行扩展,以获得给定文本中模式的范围。即开始和结束指数。

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

不是Python真棒:)不能阻止自己引用{{3}},downvotes或没有downvotes ......

enter image description here