Может быть, вы ищете всю строку "CD2" или "CD02" в группе захвата? Как в:
string input = "CD02";
var labelMatch = Regex.Match(input, "(?:(?:CD|... // edit for brevity
if(labelMatch.Success)
{
string labelText = mediaLabel.Groups[1].Value;
}
Возможно, вы допустили ошибку, используя выражение ?:
, потому что это говорит механизму регулярных выражений, что нужно сопоставить группу, а затем удалить ее из групп захвата. Некоторые другие выражения, которые вы можете рассмотреть:
(?:CD|DISC|DISK|PART)(\d\d?) // throws away the label, captures 1 or 2 digits
(?:CD|DISC|DISK|PART)(\d{1,2}) // ~same thing, matches exactly 1 or 2 digits
((CD|DISC|DISK|PART)\d\d?) // captures the whole thing in group 1