Я действительно не знаю, как регулярное выражение работает в C #, но это мое регулярное выражение
([0-9]+)(?:\.([0-9]{1,2})|)[0-9]*
Группа 1 получит часть до точки, а группа 2 (если существует) даст часть за точкой (2 цифры длиной)
код здесь будет производить все совпадения из строки:
StringCollection resultList = new StringCollection();
try {
Regex regexObj = new Regex(@"([0-9]+)(?:\.([0-9]{1,2})|)[0-9]*", RegexOptions.Singleline);
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success) {
resultList.Add(matchResult.Value);
matchResult = matchResult.NextMatch();
}
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}