[Tutor] regular expression

Rich Krauter rmkrauter at yahoo.com
Fri Feb 13 09:05:22 EST 2004

> On Thu, 2004-02-12 at 20:50, Conrad Koziol wrote:
> > What is the fastest way to search for a string and then surround

Hi Conrad,

I tried timing the two methods proposed so far. I figured the longer
pattern would take much longer.

This is what I got on my pc:

1st method(longer regex) - 1000000 times, 74.0188100338 seconds
2nd method(short regex)- 1000000 times, 67.2792310715 seconds

This is how I got those numbers. 

import re
# requires 2.3
from timeit import Timer

x = '<div> are not allowed, these arent either <br>'
patx = r'(?<!<code>)((?!<.*code>)<[^<>]*>)(?!</code>)'
paty = r'(<[^<>]*>)'
rep = r'<code>\1</code>'

print Timer(stmt='(a,na)=re.subn(patx,rep,x)',
     setup='import re;from __main__ import patx,paty,rep,x').timeit()
print Timer(stmt='(aa,naa)=re.subn(paty,rep,x)',
    setup='import re;from __main__ import patx,paty,rep,x').timeit()

Maybe this gives you an idea of how to test the relative speed of
whatever solution you come up with.


More information about the Tutor mailing list