@JJ
I'm not sure why Python is mentioned or whether why you are trying to challenge Python, but anything in assembly will be monumentally faster. The Python method is find('substring', start, finish). In Ruby, it is include?, but Ruby has a bajillion versions all of them are syntactic sugar for the same thing...
A while back in a Data Structures class we had to implement string search algorithms, so I made one from scratch in Java, Ruby and Python, and tested them. The preferred algorithm to search for a substring in an array of characters is some version of rabin-karp or knuth-pratt algorithms. I believe that all languages use some form of these, optimized for the language platform.
I attached a file done in Ruby that is based on the rabin-karp, it can search any string and find the pattern and offset, and match it.
Anywho, I will add this to my list of scripts to make in assembly, this will be fun, since it requires a good random num generator, prime generator, regex parser, and hash generator.