Practice Makes Regexp by Reuven M. Lerner