use EnumSet for options
implement exec fn for Regex struct
remove unused enum discriminators
refactor match expression
retrieve substring(s) from Match struct