2013-05-21 3 views
3

Я действительно ужасен в RegEx, в приведенном ниже коде мне нужны только фактические цифры между SH: и , or end of line. Как я могу это достичь?RegEx in C#, получая значения без критериев

[TestMethod] 
    public void Sandbox() 
    { 
     var regEx = new Regex(@"SH\:(.*?)(\,|\z)"); 
     var matches = regEx.Matches("Some Text|SH:0000000000,SH:1111111111"); 

     foreach (var match in matches) 
     { 
      Console.Out.WriteLine(match); 

      /* Getting this 
      SH:0000000000, 
      SH:1111111111 
      */ 

      /* Wanting this 
      0000000000 
      1111111111 
      */ 
     } 
    } 
+0

Этот шаблон работает: 'SH: (\ d +), *' –

ответ

5

Просто изменить свой цикл, как показано ниже

foreach (Match match in matches) 
{ 
    Console.Out.WriteLine(match.Groups[1].Value); 
} 
+0

+1, избили меня, я почти закончил форматировать код в 'SO' –

+1

Отлично, спасибо большое! – Pelle

1

Можно также сделать это:

 var regEx = new Regex(@"SH\:(?<abc>.*?)(\,|\z)"); 
    Console.Out.WriteLine(match.Groups["abc"].Value); 
+0

Полезно знать, спасибо! – Pelle

0

Вы также можете использовать

var regEx = new Regex(@"(?!SH:)\d+(?=\,|\z)?"); 

Это будет соответствовать только цифры.

Смежные вопросы