使用match object的start()方法:>>> r = re.compile(r',0\*[0-9A-F]{2}')
>>> m = r.search("kdjrnnj,0*B3;,w0l44")
>>> if m : print m.start()
7
>>> m = r.search("qui8ecc),0*21qxxcd4))")
>>> if m : print m.start()
8Next step is to remove everything after the substring
您不需要索引,也可以使用regex来完成:
^{pr2}$
re.search比re.sub快,这里:>>> strs = 'kdjrnnj,0*B3;,w0l44'
>>> %timeit r.search(strs).group()
100000 loops, best of 3: 1.42 us per loop
>>> %timeit pattern.sub('', strs)
100000 loops, best of 3: 2.79 us per loop
>>> strs = 'kdjrnnj,0*B3;,w0l44'*1000
>>> %timeit r.search(strs).group()
100000 loops, best of 3: 1.43 us per loop
>>> %timeit pattern.sub('', strs)
10000 loops, best of 3: 59.9 us per loop
>>> strs = 'kdjrnnj'*1000 + ',0*B3;,w0l44'
>>> %timeit r.search(strs).group()
1000 loops, best of 3: 260 us per loop
>>> %timeit pattern.sub('', strs)
1000 loops, best of 3: 410 us per loop