Converting NFA to regular expression
For your specific problem, I propose a regular expression in a ad-hoc meth, and the outcome was: (notation comes from Regular Expressions)


  (a*(b(b+)?ab?)?)*


I found it with the next methodology: moving from simple to more complex ( states to final states)


To arrive to $q_3$, you need to put a
This a comes from $q_1$ or $q_2$
If it comes from $q_1$, use a b else it comes from $q_2$, so use one o more b's: b+
But, $q_2$ comes from b too, so union these two possibilities, a comes from b((b+)?) 
For that, we have b(b+)?a in regular expression to go from $q_1$ to $q_3$
Now, If you want to move from $q_3$ to $q_0$, you need a extra b, so use b?. This is the part of regular expression: b(b+)?ab?
To start you probably have empty string, or a's or b to go from $q_0$ to $q_1$
Above can achieve with a* and visit $q1$ or not visit is express like: a*(b(b+)?ab?)?
Finally, you could have a nothing of that, or more than once this strings, so you should use *, and take as regular expression: (a*(b(b+)?ab?)?)*


Test Cases

I tested with the next strings and all match with the regex:


aaaaba
aababaaaaaa
abbbbbba
abbbbbbab
abbbbbbabaaaa
abbbbbbaba
bab
ba
babaaaa
aaaaa
bbba


In the other hand, you may be interested in consider algorithms to converting DFA to Regular expression, so you can find a dynamic programing algorithm, and the full description of this approach is given in the book of Models of Computation, Chapter 4. And other method, Brzozowski algebraic method. All above, because with the powerset constructive you can obtain a DFA from NFA.