Flexible regex engines. Pattern matching is a much more general problem than string matching, and you don't necessarily always have the entire input available initially. (In fact, especially for performance reasons, you might the pattern itself to tell you what possibilities to consider for the next portion of your sequence.) I've repeatedly found that a regex engine that can work on more general objects (not necessarily string/numeric inputs) and which can be fed the input at the caller's convenience could be quite handy for some applications.