Sounds good. If possible, I would also like to see a `matchAll` version with multiple patterns. Then I could implement `regexSwitchFirst` which has a default handler and throws `SwitchError` if there are no matches no default handler is supplied, and a `regexSwitchAll` that returns an empty range if there are no matches.

`regexSwitchAll` could still be used as a poor man's lexer, but now it won't hurt the intended usage so I'm not against it.

BTW, if `matchFirst` with multiple patterns returns the 1-based index of the matched pattern, how exactly is it going to return captures?