Regex matchers simplified

`match.captures[0]` as well as `match[1]` create sort of notional noise IMO, while named groups are self-descriptive and easy to read.