Được lấy từ
Biểu thức chính quy HOWTO
span () trả về cả chỉ mục bắt đầu và kết thúc trong một bộ giá trị duy nhất. Vì phương thức so khớp chỉ kiểm tra xem RE có khớp ở đầu chuỗi hay không, nên start () sẽ luôn bằng 0. Tuy nhiên, phương pháp tìm kiếm của các cá thể RegexObject quét qua chuỗi, do đó, đối sánh có thể không bắt đầu từ 0 trong trường hợp đó.
>>> 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)
Kết hợp điều đó với:
Trong Python 2.2, phương thức finditer () cũng có sẵn, trả về một chuỗi các cá thể MatchObject dưới dạng một trình lặp.
>>> 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)
bạn sẽ có thể làm điều gì đó theo thứ tự
for match in re.finditer(r'[a-z]', 'a1b2c3d4'):
print match.span()