C# 获取带有正则表达式的文本数。在C中拆分#

C# 获取带有正则表达式的文本数。在C中拆分#,c#,regex,C#,Regex,如何使用C#中的正则表达式获取文本方括号之间的数字? 示例文本: “[1]阿里·艾哈迈迪,[2]穆罕默德·拉扎维” 结果是: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

如何使用C#中的正则表达式获取文本方括号之间的数字? 示例文本:

“[1]阿里·艾哈迈迪,[2]穆罕默德·拉扎维” 结果是: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);
这将捕获括号
(\d+
)之间的数字,并将它们存储在第一个匹配的组中(
组[1]

这将捕获括号
(\d+
)之间的数字,并将它们存储在第一个匹配的组中(
组[1]


根据若昂的回答,使用基于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);
}
string s=“[1]阿里·艾哈迈迪,[2]穆罕默德·拉扎维”;
var digits=Regex.Matches(s,@“\[(\d+)\]”)
.Cast()
.Select(m=>m.Groups[1]。值)
.ToList();
foreach(以数字表示的变量匹配)
{
控制台写入线(匹配);
}

根据João的答案使用基于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);
}
string s=“[1]阿里·艾哈迈迪,[2]穆罕默德·拉扎维”;
var digits=Regex.Matches(s,@“\[(\d+)\]”)
.Cast()
.Select(m=>m.Groups[1]。值)
.ToList();
foreach(以数字表示的变量匹配)
{
控制台写入线(匹配);
}

you best me to it:)我要添加的唯一一件事是,如果可能有[11]或[342]这样的条目,那么您需要在\d之后添加一个+以便它与一个或多个匹配@“[(\d+)”你比我强:)我要添加的唯一一件事是,如果可能有[11]或[342]这样的条目,那么你需要在\d之后添加一个+以便它匹配一个或多个@“[(\d+)”