If you mean "how do I get teh match data by name?", that's easy:
string inputText = "12:45";
Regex regex = new Regex(@"(?<hour>\d\d?):(?<minute>\d\d)\s?(?<meridiem>(a|p).?m)", RegexOptions.IgnoreCase);
Match m = regex.Match(inputText);
string hour = m.Groups["hour"].Value;
If you mean "how do I get the manes of the groups?", that's pretty simple too:
Regex regex = new Regex(@"(?<hour>\d\d?):(?<minute>\d\d)\s?(?<meridiem>(a|p).?m)", RegexOptions.IgnoreCase);
string[] names = regex.GetGroupNames();
Do note that the GroupNames array will contain "0" and "1" for the two unnamed groups in your expression, as well as the names of the named ones.