Beneath the Surface: Regular Expressions in Ruby

Finite State Machines