FlashText with the Thomson algorithm.
Idea: the Thomson algorithm uses NFAs to match a single regexp to a string. FlashText uses an AC Automaton to make one amotrized linear pass on the search string. Maybe it's possible to combine the failpointer concept from AC Auto to link multiple Thomson NFAs together... Which would create
Other Sources: