Since you have 5 independent, overlapping searches you wish to perform simultaneously, you necessarily need something that won't consume letters on matching (assuming you don't want to use embedded code to cache results in a hash). Variable width match without consuming == look-ahead, so I'd start looking there.
Looking ahead and looking behind.