Every parser I've written was for a context-free grammar, and all use a recursive descent parser. I never thought about how I would parse a context-sensitive language like Yaml or Python until a Tweet recently sparked my interest.
I usually don't think about string searching. Standard libraries and modern languages have very efficient string searching algorithms built-in. In most cases, this is all that is needed to complete the task at hand. However, understanding these algorithms is fun and often helpful when applying the algorithmic pattern to other problems. This post explores the Aho-Corasick string searching algorithm.