well, its good to visualize the Finite Automaton in terms of a state diagram: labelled circles (s1, s2, ...) connected by arrows representing state transitions, ending either in accept state or reject state. To enumerate all the accepted strings we want a function that walks through each state, forking as needed, and returning on accept. So for regex 'abc' it walks through 4 states a,b,c,accept and outputs on accept. For one like 'a(b|d)c+e' the function will fork for the OR state once, and for infinitely for c+ state. So its a recursive function. Of course you can pass a variable for recursion depth to limit string length.
Unless I am missing something big, that should work it seems.