^
означает «начало строки», а «$» означает «конец строки». Вы запросили что-то, содержащее только Ora
, за которым следуют две цифры. По крайней мере, удалите ^. Группировка также не требуется. Ora[0-9]{2}
должно работать:
var pattern = @"Ora[0-9]{2}";
var match = Regex.Match("/19/Ora01", pattern);
var hour = match.Groups[0].Value;
hour.Dump();
Отпечатки Ora01
.
Если вам нужна часовая часть после Ora
, вам нужно сгруппировать цифры:
var pattern = @"Ora(?<hour>[0-9]{2})";
var match = Regex.Match("/19/Ora01", pattern);
var hour = match.Groups["hour"].Value;
Console.WriteLine(hour);
Это печатает:
01
Вы не объясняете, какую проверку вы хотите выполнить, например, имеет ли значение косые черты или нет, должен ли 19
присутствовать и, например, рассматриваться как год.
Если вы хотите убедиться, что строка соответствует этому формату и , первая часть состоит из двух цифр, вы можете использовать, например, @"/(?<year>\d{2})/Ora(?<hour>\d{2})"
:
var pattern = @"/(?<year>\d{2})/Ora(?<hour>\d{2})";
var match = Regex.Match("/19/Ora01", pattern);
var hour = match.Groups["hour"].Value;
var year = match.Groups["year"].Value;
Console.WriteLine($"{year} {hour}");
Это печатает:
19 01
Только если формат правильный.