C# 使用正则表达式从字符串中提取多个数字

C# 使用正则表达式从字符串中提取多个数字,c#,.net,regex,C#,.net,Regex,我有一个包含两个或更多数字的字符串。以下是几个例子: "(1920x1080)" " 1920 by 1080" "16 : 9" 假设“1920”和“1080”等数字仅由一个或多个非数字字符分隔,如何从中提取分隔这些数字 然后,自定义此正则表达式以匹配您将要使用的语言的风格。基本正则表达式是: [0-9]+ 您需要使用库来检查所有匹配项并获取它们的值 var matches = Regex.Matches(myString, "[0-9]+"); foreach(var march in

我有一个包含两个或更多数字的字符串。以下是几个例子:

"(1920x1080)"
" 1920 by 1080"
"16 : 9"
假设“1920”和“1080”等数字仅由一个或多个非数字字符分隔,如何从中提取分隔这些数字


然后,自定义此正则表达式以匹配您将要使用的语言的风格。

基本正则表达式是:

[0-9]+
您需要使用库来检查所有匹配项并获取它们的值

var matches = Regex.Matches(myString, "[0-9]+");

foreach(var march in matches)
{
   // match.Value will contain one of the matches
}
你可以用

string[] input = {"(1920x1080)"," 1920 by 1080","16 : 9"};
foreach (var item in input)
{
    var numbers = Regex.Split(item, @"\D+").Where(s => s != String.Empty).ToArray();
    Console.WriteLine("{0},{1}", numbers[0], numbers[1]);
}
输出:

1920,1080
1920,1080
16,9

您可以通过以下方式获得字符串

MatchCollection v = Regex.Matches(input, "[0-9]+");
foreach (Match s in v)
            {
                // output is s.Value
            }

请决定你需要哪种语言的答案。NET中的regex对象与Java对象不同。
\d
将包含所有数字,而不仅仅是罗马数字,具体取决于regex库和平台。.NET/C#的(和PCRE的)regex
\d
匹配[0-9]。句号,不,没有。它将在第二天比赛-你能解释一下这比正则表达式比赛的优势吗@你的第一句话把我弄糊涂了,直到我意识到你不是指
I
II
<代码>VII等不是0-9阿拉伯语吗?
RegexOptions。不需要IgnoreCase
。罗马数字没有大小写。通常我用RegexOptions.IgnoreCase来练习。对不起,这不是一个错误。只是在这种情况下不需要。
MatchCollection v = Regex.Matches(input, "[0-9]+");
foreach (Match s in v)
            {
                // output is s.Value
            }