15. Fanta Revisited (continued)
- Here is how the NFA engine would work:
Position in the regex | Position in the string
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^ |^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^ | ^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^ | ^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^ | ^
----------------------------------------------------------------
etc.
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^ | ^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^ | ^^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^ | ^^^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^^ | ^^^^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^^^ | ^^^^^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^^^ ^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^^^ ^^ ^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
----------------------------------------------------------------
- Oops! That's no good. But no worries - the NFA engine
will now happily backtrack, and force the ".*" to give
up characters:
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^^^ ^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^^^ ^^ ^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^^^ ^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^^^ ^^ ^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^^^ ^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
----------------------------------------------------------------
fanta(.*)n | This isn't fantastic, let's drink fanta!
^^^^^ ^^ ^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
----------------------------------------------------------------
- So, what's the big deal? Why does it matter how the regex engine
works?
They seem to do the same thing, just in different ways. Right?
|