I would rather see multipattern `matchFirst` and `matchAll` return an ordinary `Captures` struct, and the pattern index as an additional field for that struct. This will allow using a singlepattern match like a multipattern match, eliminating the need for special treatment to single patterns in `regexSwitch` - or any other generic code that uses multipattern matching.

I don't think the matched pattern index deserve the `alias this` treatment. `alias this` is for structs\classes that wrap around a value, or for when a single field is the main purpose of the struct\class and all the other fields are metadata. This is not the case here - the pattern index is not more important than other fields of `Captures` - like those that hold information about the matched text itself.

BTW - if the matched pattern index is part of the regular `Captures` object, there is no reason to make it 1-based, as the `Captures` object already has means to represent no-match.