正则表达式在字符串中的句点后获取数字

Eni*_*Eni 1 c# regex string

我正在尝试找到正确的正则表达式来提取.下面字符串中的数字。例如,第一行应该返回和数组1 1 1 1 1,第二行应该返回2 1 0 1 2。我似乎无法找到正确的正则表达式来实现这一点。任何帮助,将不胜感激。

line = 0.1, 1.1, 2.1, 3.1, 4.1            // payline 0
line = 0.2, 1.1, 2.0, 3.1, 4.2            // payline 1
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有下面的代码,但它只是返回字符串中的所有数字。例如,第一行返回0 1 1 1 2 1 3 1 4 1 0,第二行返回0 2 1 1 2 0 3 1 4 2 1

foreach (var line in Paylines)
{
    int[] lines = (from Match m in Regex.Matches(line.ToString(), @"\d+")
                                     select int.Parse(m.Value)).ToArray();

    foreach (var x in lines)
    {
        Console.WriteLine(x.ToString());        
    }
}
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

您可以使用基于后视的正则表达式解决方案:

@"(?<=\.)\d+"
Run Code Online (Sandbox Code Playgroud)

它匹配点后的 1+ 位数字,而不将点放入匹配值中。

请参阅正则表达式演示

在 C# 中,您可以使用

var myVals = Regex.Matches(line, @"(?<=\.)\d+", RegexOptions.ECMAScript)
        .Cast<Match>()
        .Select(m => int.Parse(m.Value))
        .ToList();
Run Code Online (Sandbox Code Playgroud)

请参阅C# 演示

RegexOptions.ECMAScript传递该选项\d以仅匹配[0-9]范围内的ASCII 数字并避免匹配其他 Unicode 数字