Depends on what you mean by that. You can convert every NFA into a DFA. That's a NP complete (IIRC), but running the DFA is O(n). Running the NFA without converting it is also NP complete. One isn't better than the other, but the costs vary for different expressions and usages.
And we always changed the regex NFA to an equivalent DFA and that was the implementation.
So somehow I managed to internalize the idea that an NFA is purely theoretical and can't be built.