Вы просите 0 или больше цифр. Необходимо попросить 1 или больше:
"\\d+"
Вот удобный пример, который я сделал для C # с обобщениями. Он будет соответствовать вашему регулярному выражению и возвращать нужные вам типы:
public T[] GetMatches<T>(string Input, string MatchPattern) where T : IConvertible
{
List<T> MatchedValues = new List<T>();
Regex MatchInt = new Regex(MatchPattern);
MatchCollection Matches = MatchInt.Matches(Input);
foreach (Match m in Matches)
MatchedValues.Add((T)Convert.ChangeType(m.Value, typeof(T)));
return MatchedValues.ToArray<T>();
}
тогда, если вы хотите получить только числа и вернуть их в виде массива string []:
string Test = "22$data44abc";
string[] Matches = this.GetMatches<string>(Test, "\\d+");
Надеюсь, это будет полезно для кого-то ...