Regexes for dumb substring searches aren't ''that'' terrible. This test is really dumb though, but maybe provides meaningful data. {{{#!python import re import time d = '/usr/share/dict/british-english' words = open(d,'r').readlines() test_string = 'e' test_regex = re.compile(test_string) stamp_start = time.time() print "Simple substring test" for word in words: _ = test_string in word stamp_mid = time.time() print "Regex test" for word in words: _ = test_regex.search(word) stamp_end = time.time() print "Substring time was %s" % (stamp_mid - stamp_start,) print "Regex time was %s" % (stamp_end - stamp_mid,) }}} And the output, is fairly consistent. About twice as fast to do it simply. {{{ Simple substring test Regex test Substring time was 0.0137870311737 Regex time was 0.0306131839752 }}}