Finding all regex matches by index?

MRAB python at mrabarnett.plus.com
Tue May 29 21:45:00 EDT 2012


On 30/05/2012 02:33, Roy Smith wrote:
> I have a long string (possibly 100s of Mbytes) that I want to search for
> regex matches.  re.finditer() is *almost* what I want, but the problem
> is that it returns matching strings.  What I need is a list of offsets
> in the string where the regex matched.  Thus:
>
> s = "this is a string"
> find("is", s) =>  [2, 5]
>
> Is there anything that does this?

re.finditer() doesn't return matching strings, it returns match
objects. What you want are the start positions of each match which the
match object can provide:

 >>> s = "this is a string"
 >>> [m.start() for m in re.finditer("is", s)]
[2, 5]



More information about the Python-list mailing list