взято с
HOWTO по регулярным выражениям
span () возвращает начальный и конечный индексы в одном кортеже. Поскольку
метод match проверяет только соответствие RE в начале строки,
start () всегда будет нулевым. Тем не менее, метод поиска RegexObject
экземпляры сканируют строку, поэтому совпадение может не начинаться с нуля
в этом случае.
>>> p = re.compile('[a-z]+')
>>> print p.match('::: message')
None
>>> m = p.search('::: message') ; print m
<re.MatchObject instance at 80c9650>
>>> m.group()
'message'
>>> m.span()
(4, 11)
Объедините это с:
В Python 2.2 также доступен метод finditer (), возвращающий последовательность экземпляров MatchObject в качестве итератора.
>>> p = re.compile( ... )
>>> iterator = p.finditer('12 drummers drumming, 11 ... 10 ...')
>>> iterator
<callable-iterator object at 0x401833ac>
>>> for match in iterator:
... print match.span()
...
(0, 2)
(22, 24)
(29, 31)
вы должны быть в состоянии сделать что-то порядка
for match in re.finditer(r'[a-z]', 'a1b2c3d4'):
print match.span()