reusing parts of a string in RE matches?
Kent Johnson
kent at kentsjohnson.com
Wed May 10 15:47:27 EDT 2006
John Salerno wrote:
> I probably should find an RE group to post to, but my news server at
> work doesn't seem to have one, so I apologize. But this is in Python
> anyway :)
>
> So my question is, how can find all occurrences of a pattern in a
> string, including overlapping matches?
You can specify a start location to re.search(), and get the location of
a match from a match object. This allows you to loop, searching the
string following the last match:
import re
string = 'abababababababab'
pattern = re.compile(r'ab(?=a)')
ans = []
start = 0
while True:
m = pattern.search(string, start)
if not m: break
ans.append( (m.start(), m.end()) )
start = m.start() + 1
print ans # => [(0, 2), (2, 4), (4, 6), (6, 8), (8, 10), (10, 12), (12, 14)]
Kent
More information about the Python-list
mailing list