Finding all regex matches by index?

Ian Kelly ian.g.kelly at gmail.com
Tue May 29 21:48:18 EDT 2012


On Tue, May 29, 2012 at 7:33 PM, Roy Smith <roy at panix.com> 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?

s = "this is a string"
pattern = re.compile("is")
pos = 0
while True:
    match = pattern.search(s, pos)
    if match:
        print(match.start())
        pos = match.start() + 1
    else:
        break

Cheers,
Ian



More information about the Python-list mailing list