2012-09-15 54 views
0

如何使用C#中的正則表達式將本文的括號中的數字與正則表達式進行比較? 示例文本:在C中使用Regex.Split獲取文本的數量#

「[1]阿里艾哈邁迪,[2]穆罕默德Razavi的」 結果是:1,2-

我的C#代碼是:

string result = null; 
string[] digits = Regex.Split(Text, @"[\d]"); 
foreach (string value in digits) 
{ 
    result += value + ","; 
} 
return result.Substring(0,result.Length - 1); 

回答

3
string s = "[1]Ali ahmadi,[2]Mohammad Razavi"; 
Regex regex = new Regex(@"\[(\d+)\]", RegexOptions.Compiled); 
foreach (Match match in regex.Matches(s)) 
{ 
    Console.WriteLine(match.Groups[1].Value); 
} 

這將捕獲括號內的數字(\d+),並將它們存儲在第一個匹配組(Groups[1])。

DEMO

+0

你打我吧:)只是我想補充的一點是,應該有可能是和像進入[11]或[342]那麼你需要在\ d之後加一個+,以便匹配一個或多個。 @ 「\ [(\ d +)\]」 – Rob

0

在若昂的回答使用基於的LINQ方法:

string s = "[1]Ali ahmadi,[2]Mohammad Razavi"; 
var digits = Regex.Matches(s, @"\[(\d+)\]") 
        .Cast<Match>() 
        .Select(m => m.Groups[1].Value) 
        .ToList(); 
foreach (var match in digits) 
{ 
    Console.WriteLine(match); 
} 

DEMO