3

There are three different solutions to implement regular expression matching: DFA, NFA and Backtracking. I am looking for examples:

  • a regexp, which can be solved with a DFA and the reason, why a DFA is sufficient.
  • a regexp, which requires a NFA and the reason why a NFA is necessary.
  • a regexp, which requires backtracking and the reason why backtracking is necessary.

A recommendation for some good literature about this topic would be nice, too.

ceving
  • 21,900
  • 13
  • 104
  • 178

2 Answers2

4

i guess there is more than 1 meaning to the word backtracking - even '.*a' has to backtrack to match the string "lalaiiiiiii" (because .* will first match the whole string - so then a won't match anything - and only then it will give up one character at a time, so the final match would be "lala")

i highly recommend http://www.regular-expressions.info/

Aprillion
  • 21,510
  • 5
  • 55
  • 89
-3

What I found out so far is:

  • Every regular expression, which can be implemented with a NFA, can also be implemented with a DFA. Every NFA can be transformed into a DFA.

  • Regular expressions, which require backtracking, are regular expressions, which contain back references like /(a)\1/.

ceving
  • 21,900
  • 13
  • 104
  • 178