2013-05-21 57 views
3

我真的很可怕的RegEx,在下面的代碼中,我只想要SH:, or end of line.之間的實際數字我該如何實現這一目標?正則表達式在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

只要改變你的for循環如下

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)?"); 

這將只匹配的數字。