Estimados,

    Tengo un problema que espero puedan ayudarme a resolver, resulta
que en un software que estoy haciendo, es una operación MUY frecuente
realizar la busqueda de un conjunto de strings "pequeños", dentro de
otro string en comparación mucho mas "grande". A modo de ejemplo, los
strings pequeños son "abc", "def", "123456789", etc y el otro string,
donde busco los matches de los pequeños es una página HTML, que en
general tienen 1K o 2K. Entonces, la operación común es hacer esto:

"""code"""
string_list = ['aaa','bbb','ccc','ddd','000000000000000000']

the_string = file('test.html').read()

def do_in():
  for i in string_list:
    if i in the_string:
      print 'encontrado', i
"""code"""

    El problema es que esto resulta ser muy lento cuando se realiza de
esta manera "ingenua". Para los que estan un poco metidos en python,
también probe hacer string.find() en vez de "in", obteniendo el mismo
resultado. Otras pruebas que hice fue utilizar strings de esta manera:

"""
import re
regex_str = '('+'|'.join(string_list)+')'
regex = re.compile( regex_str )
def do_regex():
  regex.search(the_string)
"""

   Obteniendo resultados ESPANTOSOS en cuanto a tiempo.

   Luego de esta introducción, que espero sea comprensible, me
gustaría preguntarles... a alguien se le ocurre como optimizar la
busqueda de un conjunto de strings, en un string?

   Desde ya muchas gracias!

Saludos,
-- 
Andres Riancho
http://w3af.sourceforge.net/
Web Application Attack and Audit Framework

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a