String Matching With Finite Automata