Realizzare un NFA in pratica significa fare un backtracking, dal momento che il flusso del programma non può essere simultaneamente in più stati diversi. (Esistono processori paralleli, ovviamente, ma è difficile mappare il comportamento irregolare e caotico delle espressioni regolari scritte dall'utente al flusso di dati regolare e diretto per cui sono state progettate le unità di vettorizzazione.) Pertanto, per decidere un puro "Questa corrispondenza? " domanda, è quasi sempre meglio trasformare ulteriormente la NFA in un DFA ed eseguirlo. Tuttavia, gli NFA sono ancora utilizzati in pratica perché i DFA non possono fare alcune cose che gli utenti desiderano, come catturare sottogruppi di un'espressione.