Dopasowywanie wyrażeń regularnych w oparciu o DFA - jak uzyskać wszystkie dopasowania?

Mam dane DFA, które reprezentują wyrażenie regularne. Chcę dopasować DFA do strumienia wejściowego i odzyskać wszystkie możliwe dopasowania, a nie tylko najmniej najdłuższe.

Na przykład:

regex: a * ba | baa

wkład: aaaaabaaababbabbbaa

wynik:

aaaaabaaabababeczenie

questionAnswers(1)

yourAnswerToTheQuestion