The theoretical framework for regular expression matching is about recognising complete strings in a language defined by a regular expression. What you generally need in practice is either (1) the ability to split up a long string into substrings that match one of several regular expressions or (2) the ability to search in a string for a substring that matches one regular expression.
In both cases (1) and (2), the actual problem is a bit different from the more general problem of recognising strings in the language defined by a regular expression. And in both cases there are some technical details that need to be tied down to make the problem well-specified. E.g., in case (2), there can be multiple matches: which one do we choose? It is also useful to give the user extra control over how the matching is done: e.g., by supplying some contextual constraints for the substring to be matched as in the "lookahead" and "lookbehind" constructs that you are asking about.
The theoretical framework is very important for our understanding of the practical problems and their solutions. I think you will find that the usual regex libraries follow the theory quite closely for their core matching algorithms with a few pragmatic additions to handle thinks like contextual constraints and counting constraints.